#include<stdio.h>
int main()
{int a=2,b=4,c=1,y;
y=a++>b++?c:a++>c--?a++ +b++:--c;
输出abcy
}
答案:5609
( a++ > b++ )? c :( a++ > c-- ? a++ + b++ : c)
# 1、a++ > b++ 为false a = 3 b =5 执行 ( a++ > c-- ? a++ + b++ : c)
# 2、 a++ > c-- 为true a =4 b =5 c = 0 执行 y=9 a++ + b++ 执行结束 a=5 b=6 c=0
# 3、输出a=5 b=6 c=0 y=9
判断就要运行表达式,a自加3次,b自加2次,c自减一次所以前三个为560
后置的++和--是先执行语句,后加1
a++>b++?这里应是比较a是否大于b,此时a的值为2,b的值为4,a>b不成立,执行:后面的a++>c--?,同时a和b分别加1,此时a的值为3,b的值为5,a++>c--?,这里a>c是成立的,执行:前面的a++ +b++,同时a加1,c减1,现在a,b,c的值分别为4,5,0,到了执行a++ +b++这里,注意到语句的最前面是有一个y=的,所以这里是y=a++ +b++,依然是++后执行,先执行y=a+b=9,然后a和b再分别加1,a的值变成了5,b的值变成了6,所以最后输出abcy也就是5609
这是我的理解,如有错误,还请指出