题27
题目
Q:假设已定义三个 int 型变量 x、y 和 z,sizeof(int) = 4, double 型采用 IEEE 754 双精度浮点数格式,变量 dx、dy 和 dz 的声明和初始化如下:
double dx = (double) x ;
double dy = (double) y ;
double dz = (double) z ;则下列关系表达式中永远为真的是 ( ) 。
I. dx+dy = (double)(x+y) II. dx × dy >= 0
III. dx/dy = dy/dx IV. (dx+dy)+dz = dx+(dy+dz)
A. I 和 II B. II 和 III C. III 和 IV D. II 和 IV
分析
A:double可以完美表示int,同时,浮点数的加减法不会有溢出,整形的加减法会有溢出

- I表达式分析
- 非永真
- x + y可能溢出
- dx + dy不会溢出
- II表达式分析
- 永真
- double型IEEE 754表示
- 尾数原码小数
- 符号和数值部分分开计算
- 结果溢出不影响乘积符号
- III表达式分析
- 非永真
- dx和dy中一个为0,另一个不为0时,不相等
- IV表达式分析
- 永真
- dx, dy, dz由32位int型转换得到
- double型精确表示int型
- 对阶时尾数移动位数不超过52位
- 尾数不会舍入
- 不会发生大数吃小数情况
解
选D