我们在一个int类型为32位补码表示的机器上运行程序。float类型的值使用32位IEEE格式,而double类型的值使用64位IEEE格式。
我们产生随机整数X、?和2,并且把它们转换成double类型的值:
/* Create some arbitrary values */ int x = random(); int y = random(); int z = random(); /* Convert to double */ double dx = (double) x; double dy = (double) y; double dz = (double) z;
对于下列的每个c表达式,你要指岀表达式是否总是为1。如果它总是为1,描述其中的数学 原理。否则,列举出使它为0的参数的例子。请注意,不能使用IA32机器运行GCC来测试你的答案,因为对于float和double,它使用的都是80位的扩展精度表本。
A. (float)x== (float)dx•
B.dx-dy= = (double) (x-y)
C. (dx+dy) +dz= =dx+ (dy+dz)
D. (dx*dy) *dz==dx* (dy*dz)
E. dx/dx= =dz/dz