这个问题已经在这里有了答案: > How does logical negation work in C? 5个
我有
int x = 5;
printf("%d", x); //i get 5... expected
x = !x;
printf("%d", x);// i get 0... hmm
5的二进制是:0101
如果对每个位应用逆,则应该得到1010,但是!不一定是逆变器,而是逻辑运算符.为什么我得到0?
是为什么在C中将正数视为true,所以!-ing会得出0?
这个编译器是特定的吗?
解决方法:
not(!)运算符分别根据输入是非零还是0来返回0或1.
如果您正在寻找按位取反,请尝试〜x.