执行下列程序段后,变量a,b,c的值分别是多少?int x=10,y=9,a,b,c;a=(--x==y++)?--x:++y;b=x++;c=y;A.a=9,b=9,c=9 B.a=8,b=8,c=10 C.a=9,b=10,c=9 D.a=1,b=11,c=10书上的答案是选B的 可我理解不了

问题描述:

执行下列程序段后,变量a,b,c的值分别是多少?
int x=10,y=9,a,b,c;
a=(--x==y++)?--x:++y;b=x++;c=y;
A.a=9,b=9,c=9 B.a=8,b=8,c=10 C.a=9,b=10,c=9 D.a=1,b=11,c=10
书上的答案是选B的 可我理解不了

这段程序先判断--x等不等于y++,--x先自减再比较所以是9,y++先比较再自加所以此时也是9,所以这个三目运算符( :)问号前面的判别式为真,所以执行冒号前面的表达式,变量x再次自减,此时x为8,之后先后执行b=x++;c=y;两条语句,注意此时y的值为10,不难发现答案为B