【发布时间】:2015-04-11 04:23:22
【问题描述】:
int a;
scanf("%i", &a);
printf("%i", a&&1);
在这个程序中,无论输入什么,它都会输出 1,即使我尝试偶数也是如此。唯一的例外是 a = 0。我可能没有正确理解 AND 运算符,但是对于任何偶数,输出不应该是 0 吗?
【问题讨论】:
-
将标题更改为“c 中的 && 运算符吐出 1”或“c 中的逻辑与运算符吐出 1”会使这个问题更有价值。
-
您的示例由于读取了未初始化的变量而调用了未定义的行为。
-
@EdS.:有点。无效输入是 UB,所以你说对了一半;他应该检查
scanf的返回值。 -
您需要使用按位比较运算符'&'来检查奇数,例如:num & 1
-
@TimČas:不;这是 UB,因为他正在读取
a && 1中a的 值,但a未初始化。读取一个未初始化的变量就是UB。
标签: c