【发布时间】:2014-04-15 10:49:40
【问题描述】:
遇到这个问题时,我一直在准备面试。
#include<stdio.h>
int main()
{
unsigned long a = 100;
long b = -1;
if(b>a)
printf("YES");
else
printf("No");
}
要找到程序的输出。答案是YES 谁能解释一下这是正确的答案吗?我分析发现,当 a 和 b 中的至少一个具有无符号限定符时,答案是肯定的。当两者都很长时,它会打印NO
编辑:
还有一个问题让我想了很多。这是代码
#include<stdio.h>
int main()
{
float t = 1.0/3.0;
if(t*3 == 1.0)
printf("yes");
else
printf("no");
}
代码的答案是no,但我无法破译它是如何获得的。另外,当我假设一个变量 a = t*3 并在 if 语句中比较它时,我得到的输出为 yes
我正在尝试学习这些概念。所以请帮助我解释这两个程序如何产生各自的输出。
谢谢
【问题讨论】:
-
当他们都是
long时,-1 > 100? -
@FatalError 当它们都只是
long时,答案是否定的,即我们都知道的 -1 -
@vivek1794 相同大小的
signed long和unsigned long与unsigned long进行比较。b到unsigned long的转换会产生大于 100 的值。