[讨论]为什么这个浮点数算不了?
#include <stdio.h>
#define B(a,b)a+1/b
int main(void)
{
double s;
s=B(5,4+3);
printf("%.2lf\n",s);
getchar();
return 0;
}
在dev_cpp下结果为8.00
把s=B(5,4+3)改为s=(5,1+3)结果为9.00
为什么浮点数就算不了呢?
[此贴子已经被作者于2005-11-10 20:52:08编辑过]
#include <stdio.h>
#define B(a,b)a+1/b
int main(void)
{
double s;
s=B(5,4+3);
printf("%.2lf\n",s);
getchar();
return 0;
}
在dev_cpp下结果为8.00
把s=B(5,4+3)改为s=(5,1+3)结果为9.00
为什么浮点数就算不了呢?
[此贴子已经被作者于2005-11-10 20:52:08编辑过]
将你的宏修改为:
B(a, b) a + 1.0 / b
便可。
整数进行运算得到的也是整数,如果将除数中任意一个写成浮点的话,表达式才会返回浮点数。
此外给予您一个建议,最好不要这样定义宏。
否则时间一久,可能自己也忘了为什么打印结果会是 8。