CC中自动类型转换规则.docVIP

  • 0
  • 0
  • 约2.91千字
  • 约 9页
  • 2021-09-06 发布于山东
  • 举报
CC中自动类型转换的规则 CC中自动类型转换的规则 CC中自动类型转换的规则 CC++ 中自动种类变换的规则 C/C++ 中自动种类变换的规则 shawpinlee posted @ 2007 年 9 月 16 日 23:04 in C/C++ , 4802 阅读 C++ 定义了一组内置种类对象之间的标准变换,在必需时它 们被编译器隐式地应用到对象上。 隐式种类变换发生在以下这些典型状况下: 在混淆种类的算术表达式中 在这类状况下最宽的数据种类成为目标变换种类,这也被称为算术变换,比如: int ival = 3; double dval = 3.14159; //ival 被提高为 double 种类: ival+dval; 用一种种类的表达式赋值给另一种种类的对象 在这类状况下目标变换种类是被赋值对象的种类。比如在下 面第一个赋值中文字常量 0 的种类是 int 。它被变换成 int* 型 的指针表示空地点。在第二个赋值中 double 种类的值被截取成 int 型的值。 0 被变换成 int* 种类的空指针值 int *pi = 0; //dval 被截取为 int 值 3 ival = daval; 把一个表达式传达给一个函数,调用表达式的种类与形式参数的种类不同样 在这类状况下目标变换种类是形式参数的种类。比如: extern double sqrt( double); //2 被提高为 double 种类 coutlt;lt; The square root of 2 is lt;lt; sqrt(2) lt;lt;endl; 从一个函数返回一个表达式的种类与返回种类不一样 在这类状况下返回的表达式种类自动变换成函数的返回种类。比如: double difference(int ival1, int ival2) { //返回值被提高为 double 种类 return ival1- ival2; } 算术变换保证了二元操作符,如加法或乘法的两个操作数被 提高为共同的种类,而后再用它表示结果的种类。两个通用 的直到原则以下: 为防备精度损失,假如必需的话,种类老是被提高为较宽的种类 全部含有小于整型的有序种类的算术表达式在计算以前其种类都会被变换成整型。 规则的定义如上边所述,这些规则定义了一个种类变换层次 构造。我们从最宽的种类 long double 开始。 假如一个操作数的种类是 long double ,那么另一个操作数无 论是什么种类都要被变换成 long double 。比如在下边的表达 式中,字符常量小写字符 a 将被提高为 long double ,它的 ASCII 码值为 97 ,而后再被加到 long double 型的文字常量 上: 3.14159L + a; 假如两个操作数都不是 long double 型,那么若此中一个操 作数的种类是 double 型,则另一个就将被变换成 double 型, 比如: int ival; float fval; double dval;// 在计算加法前 fval 和 ival 都被变换成 double dval + faval + ival; 近似地,假如两个操作数都不是 double 型而此中一个操作 数是 float 型,则另一个被变换成 float 型。比如: char cval; int ival; float fval; //在计算加法前 ival 和 cval 都被变换成 double cval+fval+ival; 不然假如两个操作数都不是 3 种浮点种类之一,它们必定是 某种整值种类。在确立共同的目标提高种类以前,编译器将 在全部小于 int 的整数种类上施加一个被称为整值提高 integral promotion )的过程。 在进行整值提高时种类 char 、signed char 、 unsigned char 和  short int  都被提高为种类  int 。假如机器上的种类空间足 够表示全部 unsigned short 型的值,这往常发生在 short 用 半个字而 int 用一个字表示的状况下,则 unsigned short int 也被变换成 int ,不然它会被提高为 unsigned int 。 wchar_t 和列举种类被提高为能够表示其基层种类 ( underlying type ) 和全部值的最小整数种类。比如已知以以下举种类  : enum status {bad, ok}; 有关系的值是 0 和 1。这两个值能够但不是一定寄存在 char 种类的表示中。当这些值实质上被作为 char 种类来储存时, char 代表了列举的基层种类, 而后 statu

文档评论(0)

1亿VIP精品文档

相关文档