一道小的读程序题!

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:10:47
int a,b=100,c,x=10,y=9;
a=(--x==y++)?--x:++y;
if(x>9) b=x++;c=y;
结果是什么?怎么读?过程啊!!谢谢!

第一行不解释了……

第二行:意思等同于:
x=x-1;
if(x==y)
{
x=x-1;
a = x;
}
y=y+1;
else
{
y=y+1;
a=y;
}
就是说,a的赋值要考虑逻辑表达式(--x==y++)正确与否。
由于--x=10-1=9=y(y++表示先运算再增量,上面的代码已经解释其实质),所以最后a=8;

第三行:上面写的代码段没有运行到else,因而y=10;
而此时x递减两次,为8,(x>9)为假,故分号前的b=x++即b=x=100(++写在x后面,同样是县运算后增量);
分号后面不由if()控制,c=y=10。

a=8
b=100
c=10
x=8
y=10
过程:
--x=9,y++=9所以--x=y++执行--x(此时x=9),a=--x=8
x=8,y++后变为10
x=8<9执行c=y所以c=10
b始终没变b=100

int a,b=100,c,x=10,y=9;
a=(--x==y++)?--x:++y; //--x=9;y++=9,y=10;x=9;--x==y++为真,a=--x=x-1=8;x=8;
if(x>9) b=x++;c=y; //x<9;所以c=y=10;