作业帮 > 综合 > 作业

define定义函数我想用define定义绝对值函数Abs,即Abs(x)输出的是x的绝对值.我是这样定义的:#defi

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/30 00:26:25
define定义函数
我想用define定义绝对值函数Abs,即Abs(x)输出的是x的绝对值.我是这样定义的:#define Abs(x) (x>=0 x:(-x)).请问为什么对于两个整数a,b,我运行Abs(a-b)得到的是错误的答案?
define定义函数我想用define定义绝对值函数Abs,即Abs(x)输出的是x的绝对值.我是这样定义的:#defi
#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)))