C not运算符是否适用于int?

我有

int x = 5; printf("%d", x); //i get 5... expected x = !x; printf("%d", x);// i get 0... hmm 

二进制中的5是:0101如果我们对每个位应用逆,我们应该得到1010,但是! 它不一定是逆变器,它是一个逻辑运算符。 为什么我得到0

是这样的原因,在C中,正数被视为真,所以! – 它会导致0? 这个编译器具体吗?

not( ! )运算符返回01 ,具体取决于输入是非零还是0

如果您正在寻找一个按位否定,请尝试~x

! 是一个逻辑运算符。 !expr值为0如果expr值为非零。 你需要按位~ (NOT)运算符。

 x = ~x; 

表达式的结果!x类型为bool (在C ++中),如果x不等于0则等于false ,否则为true

在你的情况下!x将等于false因为x == 5 。 然后在赋值语句中将此值( false )转换为int类型, x变为等于0。

也许你的意思是操作员~ ? 那是

 x = ~x; 

我在谈论C ++。 在C中,运算符的值为0或1,对应于false ,在C ++中为true ,结果为int类型。