int a;
scanf("%i", &a);
printf("%i", a&&1);
在这个程序中,无论输入是什么,它都会吐出1,即使我尝试偶数。唯一的例外是a = 0.我可能无法正确理解AND运算符,但对于任何偶数,输出不应该是0?
答案 0 :(得分:5)
因为&&
运算符如果其操作数均不为零,则返回非零值。也许你的意思是&
。
int a;
if (scanf("%i", &a) == 1)
printf("%i", a & 1);
答案 1 :(得分:1)
运算符&&
是返回true / false的逻辑AND运算符。
在C语言中,false为0(零),否则为1(一)为true,因为C没有布尔类型。
因此,运算符的结果是正确的,并且符合预期。
如果您坚持使用bool类型,则可以包含以下定义
// standard way
#include <stdbool.h>
基本上是
#define bool _Bool
#define true 1
#define false 0