
a=25&&b--<=2&&c++?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);的值为
1个回答
展开全部
结果:为“###a=10,b=19,c=30”
本道题考的主要是算符优先级、算符结合方向和printf()的返回值,本题中的算符优先关系为:
() 优先于 ++/-- 优先于 <= 优先于 && 优先于 ?:优先于 =。
详细资料可参考http://baike.baidu.com/view/1516130.htm#3
为了便于理解,我把语句进行改写(加入括号、断行),其等价语句为:
int a=10,b=20,c=30;
int X=0,Y=0;
X = 25 && ((b--)<=2) && (c++); // 25 && ((b--)<=2)已经能判断为假,不再执行c++
Y = X ? // Y得到printf的返回值,其返回值为printf()输出的字符个数
printf("***a=%d,b=%d,c=%d\n",a,b,c)
:
printf("###a=%d,b=%d,c=%d\n",a,b,c);
a=Y; // Y的值为18.
本道题考的主要是算符优先级、算符结合方向和printf()的返回值,本题中的算符优先关系为:
() 优先于 ++/-- 优先于 <= 优先于 && 优先于 ?:优先于 =。
详细资料可参考http://baike.baidu.com/view/1516130.htm#3
为了便于理解,我把语句进行改写(加入括号、断行),其等价语句为:
int a=10,b=20,c=30;
int X=0,Y=0;
X = 25 && ((b--)<=2) && (c++); // 25 && ((b--)<=2)已经能判断为假,不再执行c++
Y = X ? // Y得到printf的返回值,其返回值为printf()输出的字符个数
printf("***a=%d,b=%d,c=%d\n",a,b,c)
:
printf("###a=%d,b=%d,c=%d\n",a,b,c);
a=Y; // Y的值为18.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询