一道C语言题,帮忙看下

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:18:59
#include<stdio.h>
main()
{
int x=1,y=2,z=3;
x+=y+=z;
printf("%d\n",x<y? x++:y++);
printf("%d\n",z+=x>y? x++:y++);
}

答案是: 6
9

为什么是9,我觉得应该是7

答案是5 ,9,我软件运行出来也是这样的,下面为你清楚讲解
x+=y+=z;
其实你应该是这个看不懂吧,x=x+y;而这个y是y+z的值;所以x=x+y+z=6;而y=y+z=5; 于是 printf("%d\n",x<y? x++:y++); 这个是输出y++的值,而y++是 先调用y值再执行y++, 所以输出是5,但是y是变6了哦,
printf("%d\n",z+=x>y? x++:y++); 这个句子的意思是z=z+x>y?x++:y++;
根据优先级别来说,+级别最高,所以是先执行,再执行>号,最后执行=,最后化解为z=9>6?x++:y++;意思是z是真的,所以执行x++,输出值是9,但是x值已经变10了,现在够清楚了吧,客气的话多加几分,哈哈..

我TC 下是5,9。
x+=y+=z
y+=z;y=2+3=5
x+=y;x=1+5=6

printf("%d\n",x<y? x++:y++);x<y为假,取y,执行y++,y=6.x仍是6。

printf("%d\n",z+=x>y? x++:y++);
x>y为假,取y,z+=y,z=3+6=9;执行y++,y=7.x仍是6。

可用这验证。
#include<stdio.h>
main()
{
int x=1,y=2,z=3;
x+=y+=z;
printf("%d\n",x<y? x++:y++);
printf("x=%d,y=%d\n",x,y);
printf("%d\n",z+=x>y? x++:y++);
printf("x=%d,y=%d",x,y);
getch();
}

答案是6和9吗??