问一个C语言的基本问题~~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:35:35
double x=1.6,y=2.7;
int m=(int)x+(int)y;
printf("%f %d\n",x+=y,m);

这是我的一个考试题目,要求写出输出结果
int m=1+2=3

但是到x+=y,m就不懂了
如果说x+是 x=x+y
那么我想请教的是 y,m是什么意思?

y的类型是double,m的类型是int,而m=(int)x+(int)y,则把x,y的类型强制转换成int 类型了,所以m=1+2=3,而x是double类型的。所以最后输出结果应为;4.300000 3.(float,double类型输出时候,如果没有特别说明则保留7位)。

x+=y等同于x=x+y

x+=y是x=x+y简略写法。

相当于

double x=1.6,y=2.7;
int m=(int)x+(int)y;
printf("%f %d\n",x+y,m);

x+=y 相当于x=x+y 在你的题目中就是x=1.6+2.7所以x=4.3了。
至于输出m的值,就是题目前面的m=(int)x+(int)y=1+2=3了。

x+=y等同于x=x+y
你的输出是x+=y相当于x=x+y,意思是输出x=x+y这个表达式的值;而那表达试的值是4.3
并且前面的(int)x+(int)y是将x和y进行强制转换成整型的,
所以结果我认为是4.3和3

x+=y等同于x=x+y
m是int型的,(int)x+(int)y是将x和y进行强制转换成int型的,所以m是3,在x=x+y(也就是x+=y)这个式子中,等式左边的x只是一个双精度变量,而右边的x和y是在程序开头时就已经赋了值的1.6和2.7,所以用printf输出x时应该是4.300000,也就是说:输出的结果是4.300000 3