假定变量i、f和d的数据类型分别为int、float和double(int用补码表示,float和double分别用IEEE754单精度和双精度浮点数格式表示),已知i=785,f=1.5678e3,d=1.5e100。若在32位机器中执行下列关系表达式,

admin2015-12-30  48

问题 假定变量i、f和d的数据类型分别为int、float和double(int用补码表示,float和double分别用IEEE754单精度和双精度浮点数格式表示),已知i=785,f=1.5678e3,d=1.5e100。若在32位机器中执行下列关系表达式,则结果为“真”的是_______。
Ⅰ.I==(int)(float)I
Ⅱ.F==(float)(int)f
Ⅲ.F==(float)(double)f
Ⅳ.(d+f)-d==f

选项 A、仅Ⅰ和Ⅱ
B、仅Ⅰ和Ⅲ
C、仅Ⅱ和Ⅲ
D、仅Ⅲ和Ⅳ

答案B

解析 题中三种数据类型的精度从低到高为int->float->double,从低到高的转换通常可以保持其值不变,Ⅰ和Ⅲ正确,而从高到低的转换可能会有数据的舍入,从而损失精度。对于Ⅱ,先将float型的f转换为int型,小数点后的数位丢失,故其结果不为真。对于Ⅳ,初看似乎没有问题,但浮点运算d+f时需要对阶,对阶后f的尾数有效位被舍去而变为0,故d+f仍然为d,再减去d后结果为0,故Ⅳ结果不为真。
此外,根据不同类型数据混合运算的“类型提升”原则,在Ⅳ中,等号左端的类型为double型,结果不为真。
转载请注明原文地址:https://kaotiyun.com/show/ZzRi777K
0

相关试题推荐
最新回复(0)