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``
现在明白吗``
----------------解决方案--------------------------------------------------------
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编辑过]
----------------解决方案--------------------------------------------------------