来自:百度知道
#define Abs(x) (x>=0 ? x:(-x)) 宏定义只是完全替换,不会自动给你加括号的 Abs(a-b)变成 Abs(a-b) (a-b>=0 ? a-b:(-a-b)) -a-b 就出现问题了,负号的优先级比减号高的 所以在宏定义里,每项运算都要加括号,因为括号的优先级最高,保证表达式的运算顺序不会发生改变 #define Abs(x) ((x)>=0 ? (x):(-(x)))
#define PI 3.14
来自:百度知道
#define Abs(x) (x>=0 ? x:(-x)) 宏定义只是完全替换,不会自动给你加括号的 Abs(a-b)变成 Abs(a-b) (a-b>=0 ? a-b:(-a-b)) -a-b 就出现问题了,负号的优先级比减号高的 所以在宏定义里,每项运算都要加括号,因为括号的优先级最高,保证表达式的运算顺序不会发生改变 #define Abs(x) ((x)>=0 ? (x):(-(x)))
#define PI 3.14