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)

请说一下详细过程谢谢... 请说一下详细过程 谢谢 展开
 我来答
米果果vip
2012-08-13 · TA获得超过132个赞
知道答主
回答量:30
采纳率:0%
帮助的人:16万
展开全部
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
追问
b=8还是不太明白。。是因为=的优先级比++高?所以先赋值再加。。?x++我知道是先赋值再加可是最后的结果是 b额。。。
追答
不是那样理解的,自加运算符的使用。
对于i++(i--),和++i(--i)的不同之处在于:
i++,i-- (在使用i之前,先使i的值加(减)1)

比如
i=3;
j=i++;
(先将i的值3赋给j,j的值为3,然后i变为4)
再如:
i=3;

printf("%d",i++);
先输出3,然后i的值再变为4;

i=3;
j=++i;
(先将i的值变为4,再赋给j,j的值为4)
再如:
i=3;
printf("%d",++i);
i的值先变为4,然后输出4;
百度网友36516ea
2012-08-13 · 超过20用户采纳过TA的回答
知道答主
回答量:87
采纳率:100%
帮助的人:18万
展开全部
a=--x==y?++y:--x; 这个首先x-1,然后与y比较是否相等,如果相等,y+1,如不等,x-1,最后将结果赋值给a,此时结果,a=8,x=8,y=10
b=x++; 先将x的赋值给b,然后x-1,此时 b=8,x=9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式