一道关于--x与++x的C语言题目

来源:百度知道 编辑:UC知道 时间:2024/06/01 17:40:12
题目如下:
(1) int x=10,y=9;
(2) int a,b,c;
(3) a=(--x==y++)?--x:y++;
(4) b=x++;
(5) c=y;
问,a,b,c的值
可以提供答案:a=8,b=8,c=10
各位c语言高手们有知道这道题怎么回事不?弄不清++,——在前在后在这道题里的用途,例如在(3)行中到底--x是在里面为10还是9呢?a又得什么值?如何得来?希望能有详细的解答,谢谢

(1) int x=10,y=9;
(2) int a,b,c;
(3) a=(--x==y++)?--x:y++; //--x为x=9,y=9 所以相等,执行后面的--x,得到x=8,并赋值给a.在执行下条语句前执行(--x==y++)里面的y++,得y=10;
(4) b=x++; //b赋值为8,转下条语句前执行x++,x=9
(5) c=y; //c赋值为10

第三行开始:——x==y++ 此时是用x=9,y=9进行比较,为真,所以执行——x,但是,y++不执行。第三行执行之后,x=8,y=10,a=8;
后面就没什么问题了,b=8(但是x=9)
c=10

++,--在前就是先运算再比较,再后就是先比较再运算
a=(--x==y++)?--x:y++;
相当于
if (--x==y++)
a=--x;
else
a=y++;
相当于
x--;//x=9
if (x==y){//x=y
y++;//y=10
x--;//x=8
a=x;}//a=8
else{
y++;
a=y;
y++}

然后,b=x;x++;//b=8,x=9
c=y;//c=10

++--在实际编程中很少用到,简单来说,++--在x前面时,可以理解为x的值立即变化,在x后面时,x先完成当前计算,数值才发生变化。第三句是一个问号表达式,--x值为9等于y,所以执行x--

ergeg