C语言运算问题!

来源:百度知道 编辑:UC知道 时间:2024/06/01 07:48:26
下面是一段C程序;
double res_count;
unsigned long temp;
void main()
{
while(1)
{
res_count=(20*85)/(256-85);计算器算得大约9.9415....
temp=(unsigned int)res_count*1000;从上一步到这一步结果为什 么是9000?我想得到结果是9941,不知道哪里有错,该怎么算:
}
}

(20*85)/(256-85),(20*85)和(256-85)都是整数,所以/是整除,得数为9
改成(20.0*85)/(256-85)

改成
res_count=(20*85.0)/(256-85);
(unsigned int)(res_count*1000)

你的程序中 temp=(unsigned int)res_count*1000;的执行顺序是
先把res_count强制转换成 无符号整型,然后再与1000相乘
当然结果是9000了
要得到9941的话把程序改为 temp=(unsigned int)(res_count*1000);