- 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
您可能关注的文档
最近下载
- 某植物保健饮料项目商业计划书.docx VIP
- English in Mind 2级别精品教学课件U3.pptx VIP
- BRCGS食品安全球标准第9版标准讲解及内审员培训教材.pptx
- 劳尔RAL色卡与潘通PANTONE色卡对照表.pdf VIP
- 聚氯乙烯生产环评报告书.pdf VIP
- QC-T 592-2013 液压制动钳总成性能要求及台架试验方法.pdf VIP
- 房屋拆除工程监理规划.docx VIP
- 2024年冲刺-副主任医师(副高)-急诊医学(副高)考试历年(2015-2023)真题荟萃带答案.docx VIP
- 公司物业服务投标方案(技术方案).docx VIP
- 世界工程组织联合会:2024生成式人工智能安全与全球治理报告.pdf VIP
原创力文档

文档评论(0)