逻辑AND运算符在c吐出1

时间:2015-02-10 22:56:02

标签: c

int a;
scanf("%i", &a);
printf("%i", a&&1);

在这个程序中,无论输入是什么,它都会吐出1,即使我尝试偶数。唯一的例外是a = 0.我可能无法正确理解AND运算符,但对于任何偶数,输出不应该是0?

2 个答案:

答案 0 :(得分:5)

因为&&运算符如果其操作数均不为零,则返回非零值。也许你的意思是&

int a;
if (scanf("%i", &a) == 1)
    printf("%i", a & 1);
  • &&是逻辑AND运算符。
  • &是按位AND运算符。

答案 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