x=z*b++,b=b*x,b++

来源:百度知道 编辑:UC知道 时间:2024/05/22 14:56:35
等于多少?
为什么?

请解释详细点,谢~~~
忘了赋值:
x=2.5 z=1.4 b=5

这就是个逗号表达式,最后为42

先是把z*b++的值为1.4,b为5由于类型不同,先强制成同一类型,双精度则结果为7赋给x,赋值结束一定不要忘了,还要执行b++,所以b变成了6,所以b=b*x的值为42,而逗号表达式的结果应为最后一个表达式的结果就是b++的结果,所以整个表达式结果为42,b++的值为没加1之前的b
给你个程序
#include "stdio.h"
void main()
{double x=2.5,z=1.4;
int t,b=5;
t=(x=z*b++,b=b*x,b++);
printf("%d",t);
}

x的值等于z*b++

原因是=的优先级高于逗号表达式。

如果是这样:x=(z*b++,b=b*x,b++)
那么,x的值等于b++(但是注意,逗号表达式是从左向右的,所以最后等于b++)

x=2.5 z=1.4 b=5
z*b++ //1.4*5=7

那么x=7

我先告诉你后缀++的工作原理吧,b++是把b的值加1然后返回原来的值,这里b++是b=b+1,返回的是5,也就是说计算时用的b的原值5,b这时候已经等于6了,也就是说x=z*b++中x被赋的值实际上是1.4*5,也就是7;但是此时b的值是6,又b=b*x,所以b=6*2.5=15,后面的b++之后b=16;就是这样的,就这样解释吧,如果楼主还不明白可以再来问我的,我经常在线哦