main( ) {int x=10,y=10;int a,b,c;a=--x==y?++y:--x;b=x++;c=y printf("%d %d %d尀n"a,b,c)

2024-10-30 19:23:14
推荐回答(2个)
回答1:

main(
)
{int
x=10,y=10;
int
a,b,c;
a=--x==y?++y:--x;
1)这里有四个运算符:=(赋值元素安抚)、--(自减运算符)、==(等于运算符)、?:(条件运算符),而由运算符的优先级从高到低有:--、==、?:、=。先计算--x后x=9,再计算等于运算符,等于运算符左右两边不相等,所以条件运算符第二个条件执行,即执行--x,然后x=8,也就是赋值运算符右边等于8,所以a=8,而且同时x=8,y=10;
b=x++;x++表示在使用x之后(即先将x的值赋给b),使x的值加1,所以此时b=8,x=9,y=10;
c=y
;将y的值赋给c,所以c=10,x=9,y=10;
printf("%d
%d
%d\n"a,b,c)
所以输出结果为8
8
10

回答2:

a=(--x==y++)?--x:++y;
先判断--x==y++是否为真,--x,将x的值减1,取其值,结果是9,y++先取y的值为9,然后其值加1,y=10
所以--x==y++
为真,所以
a=--x=8
b=x++;
先取x的值8,再将其值加1,所以b=8,x=9
c=y=10
所以最后结果就是8
8
10
主是理解前增(前减)和后增(后减)区别,++x和x++的区别在于++x先把x的值加1,再取其值,而x++是先取其值,再把值加1
a?b:c的意思是a成立,则执行b,否则执行c
希望能帮到你。。。