当前位置: 代码迷 >> C语言 >> 解释下这两道题
  详细解决方案

解释下这两道题

热度:90   发布时间:2007-10-15 12:48:39.0
解释下这两道题
提示: 作者被禁止或删除 内容自动屏蔽
2007-10-15 04:48:39
zhaoyg

等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
  得分:0 
1:因为x>y不成立所以只执行x=y;y=z;若是将z=x;x=y;y=z;都放入花括号中那么就是另一种情景了
2:题是不是抄错了,b=x++应该是a=x++吧

----------------解决方案--------------------------------------------------------
1.已知intx=10,y=20,z=30;以下的语句执行后x,y,z的值是
if(x>y)
z=x;x=y;y=z;

if(x>y)
z=x;没执行到,只执行:x=y;y=z;


2.
int x=10,y=9;
int a,b,c;
b=(--x==y++)? --x:++y;//红色处应该是a吧,条件成立,执行了两次--x,所以a=x=8,y=10
b=x++;//b=x=8
c=y;//c=y=10






----------------解决方案--------------------------------------------------------
1:可以这样看``:

if(x>y)
z=x;

x=y;y=z;

如果x>y``那么执行z=x;``然后直接执行``x=y;y=z;```LZ现在明白吗```



2:`--和++如果放在变量前面``就先让这个变量增加1`在使用这个变量``

如果是在后面``就先使用这个变量``再让这个变量增加1`


现在看程序:

b = ( --x == y++ ) ? --x :++y ; 先让X减少1再和Y比较``比较后Y增加1`

如果条件成立(为真)``那么就让X减少1``再取X的值``

如果是假``就让Y的值增加1``再取Y的值``

b=x++; 将X的值赋给B``



c=y; 将Y的值辅给C```

至于为什么A是8``因为A没有被赋初值```所以是个随机的``也可能像2楼说的``抄错了``

抄错的地方应该是这里:

b=(--x==y++)? --x:++y;
b=x++;

两个B``其中一个一定是A``

现在明白吗``




[此贴子已经被作者于2007-10-15 13:12:00编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案