我知道在C语言中,如果语句和比较为False=0,其他任何东西都等于true。
因此,
int j = 40
int k = !j
k == 0 // this is true
我的问题正好相反。怎么了!0变成?1个?
int l = 0
int m = !l
m == ? // what is m?
最佳答案
c中的布尔/逻辑运算符必须产生0或1。
根据ISO C99标准第6.5.3.3/5节:
逻辑求反运算符!
的结果为0(如果其操作数的值比较不等于0),如果其操作数的值比较不等于0,则结果为1。
实际上,!!x
是一个常用的习惯用法,用于强制值为0或1(不过,我个人更喜欢x != 0
)。
另请参见Q9.2 from the comp.lang.c FAQ。