全塑补偿链:c语言(问题)

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/26 12:52:06
#include<stdio.h>
void main()
{
double x,y;
x=2;
y=x+3/2;
printf("%f",y);
}
为什么不能等于3.5000000,而等于3.000000

#include<stdio.h>
void main()
{
double x,y; //定义x,y为双浮点型.
x=2;
y=x+3/2; //在3/2这一算式,内存分配了两个int 给了3 和2,当3/2后,它们的结果被默认为int型,1.所以y=3.000000.
但是,如果你想输出的是单浮点的话,可以写成:y=x+3.0/2
或y=x+3/2.0.并不是楼上说的整除,注意啦!!!!!

printf("%f",y);
}
等于3.000000

另外,这是一个初学者经常犯的一个错误,应该用printf("%lf",y);因为double和float在内存分配上存在差异,所以用printf函数进行输出的时候要加以区别。

/在C语言里是整除,如果被除数和除数都是整型数的话,结果就只是整数商。比如3/2=1,8/3=2。

double x,y;
x=2;
y=x+3.0/2;
printf("%f",y);

f格式的是默认输出小数点6位,这是不指定宽度的.保证整数部分的完全输出,这种输出符在输出的小数部分会出现问题的.

在句子y=x+3/2; 里3/2的结果默认的为int型,
按三楼的改成 y=x+3.0/2;即可