请帮我解决c程序的问题

时间:2015-03-18 02:50:38

标签: c

int x = 1,y = 1,z = 1;

++x || ++y && ++z;

printf("%d%d%d",x,y,z);

它输出2,1,1。但是这些一元运算符和逻辑运算符如何努力提供这样的结果我无法理解。是否只有一元运算符只适用于第一种情况而不适用于其他情况。 C也不会产生任何布尔数据类型。请帮我解决我的问题。

1 个答案:

答案 0 :(得分:1)

lurker上面的回答是正确的。

||&&short circuit operators

等效代码是:

if(! ++x ) {
    if( ++y ) {
        ++z;
    } 
}