c语言 问题 请问运行结果为什么c等于3而不是2?

#include <stdio.h>
main()
{
int a=1,b=2,c=3,d=0;
if(a==1 && b++==2)
if(b!=2||c--!=3)
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,b,c);
else
printf("%d,%d,%d\n",a,b,c);
}

条件判断有一个短路特性,为了提高性能。
比如a&&b,如果a的值为假,那么表达式直接为假,b也不执行了
然后a||b,如果a的值为真,那么表达式直接为真,b也不执行了
看你的题,得知b++运行了,b此时等于3
又b!=2为真,所以c--!=3没有执行。
所以c等于3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-10
||是左右有一个对就算对,因为b=3,所以b!=2,左边的对,就不再考虑右边对不对,c--也就没有执行本回答被网友采纳
第2个回答  2017-09-10
注意fun函数中是(*q)++即,*q的值++,由于q=a,所以*q相当于a[0],循环了五次,所以加了5,a[0]=1+5=6,所以最后输出是6,2,3,4,5
相似回答