还是C语言问题~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/22 13:44:41
main()

{ int x,y=7;

float z=4;

x=(y=y+6,y/z);

printf("x=%d\n",x);

}

运行结果:x=3

这是怎样运算呢??不是应该等于1吗??“/”这个不是除吗??

x=(y=y+6,y/z);
-----------------

这个有个“,”逗号表达式。此式会从左到右进行运算,把最后一个“,”的后面的表达式就是此表达式的值。
所以:y=y+6,此时。y=13。那y/4.就是13/4。就是3。
因为,两个都是int 型的,所以结果 是3..
/ 表示 除是对的。

x=(y=y+6,y/z),首先做y=y+6,y就等于13啦
再y/4等于3.25,然后把3.25赋值x,x是整形,所以x=3

这个结果是正确的。
x=(y=y+6,y/z);
这一条语句等效于:
y=y+6; //此时y被赋值变成13
赋值语句的值为等号左边变量的值,也就是13
y/z是一个取整除法,结果为3
然后,括号里面是一个逗号语句,逗号语句是分割的若干条语句
逗号语句的结果是最后一条语句的值
所以x=3