C语言中,宏中,赋值符号=前边的标识符还用加括号吗?

来源:百度知道 编辑:UC知道 时间:2024/05/18 20:46:06
C语言中,宏中,赋值符号=前边的标识符还用加括号吗?
就比如
#define A(a,b) a=(a)+(b)
还是
#define A(a,b) (a)=(a)+(b)

实际上加不加都可以,加了括号可以避免一些谬误
例如
#define A(a,b,c) c = a*b

使用A(1+2, 3, x);
会变成

x= 1+2*3;

x的结果是7,而不是期望的9

所以用宏的时候通常都会加上()