int j=4;
(!j!=1)?printf("Welcome"):printf("Bye");
在上面的代码段中,根据我的说法,第一个j!=1
将导致为true,!true
为false,这必须导致打印Bye
,但我得到Welcome
为输出。
有人可以解释一下吗?
答案 0 :(得分:2)
!j!=1
为(!j)!=1
,而不是!(j!=1)
。
答案 1 :(得分:2)
这是因为!
(NOT)的operator precedence高于!=
所以......
j = 4; // 4
!j // 0
在您的情况下,0 != 1
将为真,因此会打印“欢迎”。
对于您期望的结果,您的病情必须是!(j!=1)
。
答案 2 :(得分:2)
Logical NOT运算符!
的优先级高于Not Equal To运算符!=
所以你的条件相当于((!j) != 1)
请参阅https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
答案 3 :(得分:2)
一元运算符'!'的优先级高于'!='。
阅读 - https://www.tutorialspoint.com/cprogramming/c_operators_precedence.htm。
答案 4 :(得分:2)
!
首先执行,因为一元运算符!
的优先级高于!=
。
!4
变为0
,然后0 != 1
变为true
。
因此,输出为Welcome
。