int i=0,j=0,a=6; if((++i>0)||(++j>0))a++; printfi=%d,j=%d,a=d%;,i,j,a); 则上面程序的输出结果是(B) A

2025-04-27 02:10:18
推荐回答(3个)
回答1:

int i=0,j=0,a=6; if((++i>0)||(++j>0))a++; printf("i=%d,j=%d,a=d%\n",i,j,a);
由于i=0,++i后i=1>0,所以条件语句只执行了++i>0的判断就可以了,跳过了++j>0的判断
而判断后执行a++;后a的值变成7,所以结果是B

回答2:

a++; 等同于
a=a+1;
a自加了
所以是7
((++i>0)||(++j>0))中
i先自加得,i=1
所以 i>0 为真
条件为或
所以j不自加j为0

编译器不一样,结果也可能不一样,尤其是++i;
有的先自加,再运算,有的就是先运算,再自加

回答3:

因为 if 条件句的 或 语句 ,从左到右,有真的就不会在去访问下面的判断语句了的.因此楼主的 题里
(++i>0)||(++j>0) 只执行到 ++i>0,
OK?