#include <stdio.h>#define B(a,b)a+1/bint 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。
多谢版主!小弟受教了!
你当人家傻啊,这点人家是肯定会知道地