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( !
)运算符返回0
或1
,具体取决于输入是非零还是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
类型。