C语言的问题,急求

来源:百度知道 编辑:UC知道 时间:2024/06/28 06:10:25
int x = 10, y = 9;
int a, b, c;
a = (--x == y++)? --x: ++y;
b = x++;
c = y;
请问a,b,c的值,并解释一下为什么,谢谢!

a = (--x == y++)? --x: ++y;
这个显然是最主要的,执行步骤如下:
1:--x 得x=9
2:比较 得 相等
3:y++ 得 y=10
4:因为括号内相等 执行--x 得x=8
5: 赋值给a 得 a=8
6:赋值给b 得 b=x++ 为 8 (先赋值,再加一)
7:赋值给c 的 c=10
注:++y 不执行,

i++是先用再加 ++i是先加再用

记住一点 i++是先用再加 ++i是先加再用
a = (--x == y++)? --x: ++y;
--x为9 y++先为9 判断后为10 所以成立。所以x为8
b = x++;
先用再加,b为8

c就是10

a=8,b=8,c=10
1.先做--x得x=9
2.比较(--x == y++)为真(因为先使用y的值,然后再++),算--x,得x=8,y=10
3.赋值:a=8,b=8(因为先使用x的值,即8,然后再++,即最后x=9),c=10

a=8;
b=8;
c=10.
先说明,++x是先加后用,x++是先用后加;
表达式0?表达式1:表达式2 是表达式0成立执行表达式1,否则执行表达式2.
a=(9=9)?8:10;
应该很清楚了

a=9;
b=9;
c=10.