C 条件运算符的执行
在上面的代码段中,根据我的说法,首先是C 条件运算符的执行,c,conditional,logical-operators,C,Conditional,Logical Operators,在上面的代码段中,根据我的说法,首先是j=1将导致true和!true为false,这必须导致打印Bye,但我得到Welcome作为输出 有人能解释一下吗?!j=1是(!j)=1,而不是!(j!=1)这是因为(非)的值高于=所以 int j=4; (!j!=1)?printf("Welcome"):printf("Bye"); 在您的情况下,0!=1将为真,因此打印“欢迎” 对于您想要的结果,您的条件必须是!(j!=1)逻辑NOT运算符的优先级高于不等于运算符= 因此,您的条件等价于(!j)!
j=1
将导致true和!true
为false,这必须导致打印Bye
,但我得到Welcome
作为输出
有人能解释一下吗?
!j=1
是(!j)=1
,而不是!(j!=1)
这是因为代码>(非)的值高于=代码>所以
int j=4;
(!j!=1)?printf("Welcome"):printf("Bye");
在您的情况下,0!=1
将为真,因此打印“欢迎”
对于您想要的结果,您的条件必须是!(j!=1)
逻辑NOT运算符代码>的优先级高于不等于运算符=代码>
因此,您的条件等价于(!j)!=1)
请参见一元运算符“!”的优先级高于“!=”
阅读-。代码>首先执行,因为一元运算符代码>的优先级高于=代码>
!4
变成0
然后0!=1
变为真
因此,输出是Welcome
请查看并自己回答。显然,它应该写为j??!!j=1.printf(“欢迎”):printf(“再见”)代码>相反,为了清晰起见。如果您将其中一个答案标记为答案,那就太好了。。。
j = 4; // 4
!j // 0