问题描述
- C语言在#define中带参数出错,为什么
-
#include
#define FUNC(X,Y) (1/(X)+1/(Y))
int main(void)
{
double x=FUNC(2,2);
printf("%lfn",x);
return 0;
}
在VS2013中编译没有错误,但是输出结果是0.000000,为什么?是#define用错了吗?
解决方案
In C the divide between int also return int
so 1/2=0
so 1/2 + 1/2 = 0
solution
#define func(x,y) (1.0/(x)+1.0/(y))
解决方案二:
多项式是整数类型的,两个结果都是0.可以写成#define FUN(X,Y) (1.0/x+1.0/y)
解决方案三:
数据转换问题,多理解下吧
解决方案四:
1,2都是整型的数据,整型数据之间进行运算之后还是整型,所以1/2=0,所以你的答案会输出0.000000
时间: 2025-01-21 12:40:35