#define square(x) x*x /*wrong*/
因为宏定义是单纯的文本替换
当如下使用时如:
square(y+1)
将替换为y+1*y+1
运算顺序不对
应改为 想#define square(x) (x)*(x)
出现自增也会有问题如#define max(a,b) ((a)>(b) ? (a) : (b))
当使用max(i++,j++)时会变为
((i++)>(j++)?(i++):(j++))
#define square(x) x*x /*wrong*/
因为宏定义是单纯的文本替换
当如下使用时如:
square(y+1)
将替换为y+1*y+1
运算顺序不对
应改为 想#define square(x) (x)*(x)
出现自增也会有问题如#define max(a,b) ((a)>(b) ? (a) : (b))
当使用max(i++,j++)时会变为
((i++)>(j++)?(i++):(j++))