标签: c
int x = 1,y = 1,z = 1; ++x || ++y && ++z; printf("%d%d%d",x,y,z);
它输出2,1,1。但是这些一元运算符和逻辑运算符如何努力提供这样的结果我无法理解。是否只有一元运算符只适用于第一种情况而不适用于其他情况。 C也不会产生任何布尔数据类型。请帮我解决我的问题。
答案 0 :(得分:1)
lurker上面的回答是正确的。
||和&&为short circuit operators。
||
&&
等效代码是:
if(! ++x ) { if( ++y ) { ++z; } }