📜  门| GATE CS 2018 |简体中文第56章(1)

📅  最后修改于: 2023-12-03 15:28:38.016000             🧑  作者: Mango

门| GATE CS 2018 |简体中文第56章

简介

《门| 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

参考资料

《门| GATE CS 2018 |简体中文第56章》题解