c语言 条件语句问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 07:31:48
执行以下程序段后 变量a,b,c的值分别是?
int x=10,y=9,a,b,c;
a=(--x==y++)?--x:++y;b=x++;c=y;

答案是8 8 10 为什么?谁能解释下,谢谢

开始x = 10
y = 9
在a = (--x == y++)时:
x 先进行自减 现在X为9,与Y进行比较,而y++是后加所以先进行比较再加
所以在比较的时候y = 9(但比较完成之后Y进行自加为10),现在结果是X == Y
为真,执行 --x; 现在 a = x = 8
后面的两句 b= x++; 同理为先赋值后加 b = 8
c = y Y 经过自加后现在为10
所以结果是 a = 8 b = 8 c = 10