为什么输出结果是8.00而不是40.00
#include <stdio.h>
#define A(a,b) (a>b)?a:b
void main()
{
printf("result = %.2f",A(8,2)*5.0);
}
#define 后面需要加括号,不然就就会直接引用公式,后面有乘法先运算乘法
这个涉及到运算符优先级问题了,你在宏上加个括号就行:
#include <stdio.h>
#define A(a,b) (a>b)?a:b
void main()
{
printf("result = %.2f", (A(8, 2))*5.0);
}
不加时候相当于printf("result = %.2f", (8>2) ? 8 : 2*5.0);这时候会先计算乘法,也就是相当于:
printf("result = %.2f", (8>2) ? 8 : 10);那么打印结果是8就没什么奇怪了。
建议题主去仔细看看运算符优先级,以及宏定义的一些知识。
只需要再 #define 后面需要加括号就可以解决了。
可以考虑在#define 后面加括号,就可以了。