单选题 在C语言程序中,以下程序段最终的f值为______。
float f=2.5+1e10;
f=f-le10;
  • A.2.5
  • B.250
  • C.0
  • D.3.5
【正确答案】 C
【答案解析】[解析] 首先我们知道float类型采用IEEE 754单精度浮点数格式表示,下表给出了IEEE 754标准单精度浮点数格式。
{{B}}IEEE 754标准单精度浮点数格式{{/B}}
符号位S 偏移的阶码 尾数
1位 8位 23位
其中尾数隐含了一位,即尾数有24位二进制有效位数。因为1e10=1010≈10*230≈233,在数量级大约为233,而2.5的数量级为21,因此在计算2.5+1e10进行对阶时,两数阶码的差为32,也就是说,2.5的位数要右移32位,从而使得24位有效数字全部丢失,尾数变为全0。然后再与1e10的位数相加,结果就是1e10的尾数,因此f=2.5+1e10的运算结果仍为1e10,这样,再执行f=f-1e10时结果就为0。
故本题正确答案为C。