已知: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的是多少
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/15 04:04:51
![已知: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的是多少](/uploads/image/z/1160163-27-3.jpg?t=%E5%B7%B2%E7%9F%A5%EF%BC%9Aa%3Db%3Dc%3D1%E4%B8%94a%2Cb%2Cc%E5%9D%87%E4%B8%BAint%E5%9E%8B%E5%8F%98%E9%87%8F%2C%E6%89%A7%E8%A1%8C%E4%BB%A5%E4%B8%8B%E8%AF%AD%E5%8F%A5%EF%BC%9A%2B%2Ba%7C%7C%2B%2Bb%26%26%2B%2Bc%EF%BC%9B%E5%88%99%E5%8F%98%E9%87%8Fa%E7%9A%84%E5%80%BC%E6%98%AF%E5%A4%9A%E5%B0%91%2Cb%E7%9A%84%E6%98%AF%E5%A4%9A%E5%B0%91%2C%E5%B7%B2%E7%9F%A5%EF%BC%9Aa%3Db%3Dc%3D1%E4%B8%94a%2Cb%2Cc%E5%9D%87%E4%B8%BAint%E5%9E%8B%E5%8F%98%E9%87%8F%2C%E6%89%A7%E8%A1%8C%E4%BB%A5%E4%B8%8B%E8%AF%AD%E5%8F%A5%EF%BC%9A%2B%2Ba%7C%7C%2B%2Bb%26%26%2B%2Bc%EF%BC%9B%E5%88%99%E5%8F%98%E9%87%8Fa%E7%9A%84%E5%80%BC%E6%98%AF%E5%A4%9A%E5%B0%91%2Cb%E7%9A%84%E6%98%AF%E5%A4%9A%E5%B0%91)
已知: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的是多少
已知: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的是多少已知: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下调试一下;可惜我等级不够,要不然把结果图片也放上去,就这样吧.