已知: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的是多少
已知: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下调试一下;可惜我等级不够,要不然把结果图片也放上去,就这样吧.
为单目运算符,结合方式是从右向左;
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下调试一下;可惜我等级不够,要不然把结果图片也放上去,就这样吧.
已知:a=b=c=1且a,b,c均为int型变量,执行以下语句:++a||++b&&++c;则变量a的值是多少,b的是多
已知有声明“int a=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,变量c的值为_______.
c语句 int a=5,b;b=a>3&&0,a++;执行后变量b的值为?
已知int a,b,c;,则执行语句a=5+(b=6,c=4);后,变量a的值是
char a='i' b='a' int c; c=a+b; a=c; 执行后变量a b c的值是多少
已知int i,a;执行语句“i=(a=2*3,a*5),a+6;”后,变量 i 的值是( ) A 6 B 12 C 3
已知int a,b,c;则执行语句a=5+(b=6,c=4); 变量a的值为多少?
有输入语句:int a,b,c; scanf("a=%d,b=%d,c=%d",&a,&b,&c); 为使变量a的值为1
8、设a、b、c都是整型变量,如果a的值为1,b的值为2,则执行c=a++||b++;语句后,变量b的值是( ).
执行语句a=b=c=1;++a&&--b||--c;后,变量a、b、c的值依次是()?
假定a和b为int型变量,则执行以下语句后b的值是:a=1;b=10; do{b-=a;a++;}while(b--
已知"int a=4,b=5,c;";则执行表达式"c=a=a>b"后变量a的值0吗?