其中哪些是数据类型提升和降级:
char ch = 'C';
int i = 65;
float fl = 2.2;
ch = ch + 1;
i = fl + 2 * ch;
fl = 2.0 * ch + i;
ch = 5212205.17;
我说的对吗?
晋升 :
i = fl + 2 * ch;
fl = 2 * ch + i;
降级:
ch = 5211205.17;
不知道
ch = ch + 1;
也降级..请帮助:)
char ch = 'C';
文字'C'
类型为int类型,降级为char类型(赋值期间转换为左运算符)。
float fl = 2.2;
文字2.2
类型为double类型,降级为float类型(赋值期间转换为左运算符)。
ch = ch + 1;
变量ch是char类型的,被提升为int类型(整数提升)。
相加的结果为intch + 1
类型,并降级为char类型(赋值期间转换为左运算符)。
i = fl + 2 * ch;
变量ch是char类型的,被提升为int类型(整数提升)。
的结果为int2 * ch
类型,并提升为float(平衡)类型。
的结果为floatfl + 2 * ch
类型。浮点数降级为int(在赋值期间转换为左运算符)。由于精度下降,这是一种危险的转换,一个好的编译器应发出警告,试图在没有显式强制转换的情况下将浮点数存储在int内。
fl = 2.0 * ch + i;
变量ch是char类型的,首先被提升为int类型(整数提升),然后被提升为double类型(平衡)。
的结果为double2.0 * ch
类型。
的结果为double2.0 * ch + i
类型,降级为float类型(赋值期间转换为左运算符)。
ch = 5212205.17;
文字5212205.17的类型为double,并降级为char类型(在分配过程中转换为左运算符)。这是一个危险的转换,并且可能也是未定义的行为,因为char的签名是实现定义的,而且数字不能容纳在char内。
试图将一个带符号的浮点数存储在无法表示它的类型(例如,无符号的int)中是未定义的行为,即严重的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句