C语言中。int a=1,b=0,c=1; 执行语句 !b||++a&&++c 后,a,b,c

2024-11-15 11:54:31
推荐回答(3个)
回答(1):

对于!b||++a&&++c;按照规定, 要先计算 && (&&的优先级比||高)也就是需要计算出 ++b和c++;
但是按照优化, 只要计算出 a>0 就可以了,不需要计算出 ++b和c++,“||”在这里起到了短路的功能(短路就是,当第一条表达式能决定整条表达式的结果,那么后面的语句都不执行!),这也叫做布尔法则,给你推荐一本书叫做“c语言解惑”。望采纳

回答(2):

首先根据运算符优先级和结合性。((!b))||((++a)&&(++c))
然后先算!b,此时(!b)=1,为true,于是不需要算||后的内容了。因为:true||任意表达式=true。
注意,运算符优先级不代表计算优先级。
如果你把b=1 结果就是212

回答(3):

或运算,而且是左结合,!b为真,整个表达式就为真了,不再继续运算,也就是++a和++c没有运算,表达式的结果就出来了。