当前位置: 代码迷 >> C语言 >> 程序结果请教大鸟们
  详细解决方案

程序结果请教大鸟们

热度:148   发布时间:2007-11-16 09:35:23.0
程序结果请教大鸟们
为什么这个程序运行后结果不是28。000000。而是27。000000请大鸟赐教,谢谢
搜索更多相关的解决方案: 结果  

----------------解决方案--------------------------------------------------------


----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <conio.h>

int main(void)
{
float a, b;
float m, n, x;
a = 7;
b = 4;
m = 38.4;
n = 6.4;
x = a / 2 + b * m / n + 1.0 / 2.0;
printf("%f\n", x);


getch();
return 0;
}


// 结果 28

[此贴子已经被作者于2007-11-16 9:48:17编辑过]


----------------解决方案--------------------------------------------------------
是我上课没听讲后果。老师讲过:整形除整形结果为整形。麻烦大家了
----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <conio.h>

int main(void)
{
float a, b; // 改成浮点数
float m, n, x;
a = 7;
b = 4;
m = 38.4;
n = 6.4;
x = a / 2 + b * m / n + 1.0 / 2.0; // 改成浮点数
printf("%f\n", x);


getch();
return 0;
}


// 结果 28


----------------解决方案--------------------------------------------------------
表达式a/2+b*m/n+1/2的运算顺序是从左至右,乘除优先级高.所以运算过程为:
a/2 + b*m/n + 1/2
1、a与2皆为整型,相除得整,小数部分被截除.结果为3
2、b*m/n中m,n为浮点型,最后结果自动转换为浮点型.结果为24.0
3、1/2又是整除整,其值的整数部分为0,所以结果为0
1、2、3式相加,结果为浮点型,输出时默认输出6位小数.即为27.000000
----------------解决方案--------------------------------------------------------
楼上的!
a/2+b*m/n+1/2 这个表达式根据顺序是从左至右是没错!
不过!貌似!
不能一下都把* /计算了吧
----------------解决方案--------------------------------------------------------
呵呵,当然不能咯.应该先乘再除.
----------------解决方案--------------------------------------------------------
天哪!
TC2.0
----------------解决方案--------------------------------------------------------

```TC2.0?现在主流用什么啊


----------------解决方案--------------------------------------------------------
  相关解决方案