程序结果请教大鸟们
为什么这个程序运行后结果不是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?现在主流用什么啊
----------------解决方案--------------------------------------------------------