作业帮 > 综合 > 作业

已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 13:30:55
已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多少,
已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多少
1).首先我们来看运算的优先级:a:在这三个运算符中优先级的顺序是++第一,
为单目运算符,结合方式是从右向左;
b:第二个就是区分&&和||了,他们都是双目运算符,
结合方式是从左向右,但是&&的
优先级要高于||;
2).虽然这三个运算符是有优先级的,但是在特殊情况下还不是按其优先级来算的,比如你提问的这题就是典型的例子,会出现短路现象.
3).++a||++b&&++c;中先划分为两个部分++a一部分,++b&&++c为 一部分,即可看成是(++a)||(++b&&++c)先算左边++a,a从1加到2 ;左边逻辑值就是1了,就不需要往下运算了,那么b,c的值就会不变仍然为1.这就是我提到的短路现象.
4).所以最后的结果就是a=2,b=1,c=1;
5)代码如下
#include
main()
{int a,b,c;
a=b=c=1;
if(++a||++b&&++c)
printf("%d,%d,%d\n",a,b,c);
}
6).你可以结合我所说的,在TC或者VC下调试一下;可惜我等级不够,要不然把结果图片也放上去,就这样吧.