#include<stdio.h> void main() { int a,b,c; a=b=c=1; if (a++||++b) c++; printf("%d,%d,%d\n",a,b,c);

为什么答案是2,1,2?

你要搞清楚 | 和 || 的区别,||:逻辑或,前后条件只要有一个满足表达式为真,a++||++b,a++先判断,后执行+1,也就是a=1为真,后面++b就不用管,不执行,就是短路性质。
短路现象常见的有,短路与(&&)和短路或(||),若a && b ,如果a 的值为假,则整个表达式的值就为假,它是从左向右计算的。所以执行该表达式后,b 的值还是它的初始值,即不进行运算。若a || b ,如果a 的值为真,整个表达式的值就为真,执行顺序同上。b 的真假由最初的真假来判断,也就是说,当a 为真时,b 则不进行运算了。

回答很辛苦,希望采纳。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-16
if语句里面的条件判断都使用 短路法
a++ || ++b 并不是 先判断 a++ ,再执行 ++b
因为 a++后的结果是 1,已经为真,就不再执行 ++b了。
所以,结果为 2 , 1, 2本回答被提问者和网友采纳
第2个回答  2014-06-16
if (a++||++b) c++;
a++在前,所以当a++为真时,++b被忽略了,因此后者没有计算。
第3个回答  2014-06-16
if(a++||++b)
当a++成立时,++b不执行追问

为什么?

追答

||短路或

这是基本概念

相似回答