📅  最后修改于: 2023-12-03 15:28:38.016000             🧑  作者: Mango
《门| GATE CS 2018 |简体中文第56章》是《 GATE Computer Science 2018 题库》中的一道题目。这个题目属于C语言的范畴,主要考察考生对C语言的基础掌握程度。
以下是这道题目的题目描述:
#include<stdio.h>
int main()
{
float x=1.1;
if(x==1.1)
printf("IF");
else
printf("ELSE");
return 0;
}
此代码的输出结果是?
A. IF
B. ELSE
C. 编译错误
D. 运行时错误
看似简单的代码,但有许多程序员在面试中遇到了这道题目。其核心的解决方法在于了解计算机浮点数就是一个近似值的概念。因为计算机使用二进制,它无法准确地表示非二进制分数。例如,十进制分数1/3不能用有限的数字表示,我们都记得1/3=0.3333 ...。 同样,十进制分数1.1也不能用有限的二进制数字表示。 在这种情况下,计算机会将它舍入为最接近的可表示数字,即1.1000000×2的幂次方,这个舍入误差是客观存在的。 因此,它与1.1进行比较时,双方运算结果是不匹配的。这就是本程序输出ELSE的原因。
B. ELSE