#include<stdio.h>
#define SQR(x) (x*x)
int main(){
int a;
a= SQR(3-4);
printf("%d",a);
return 0;
}
输出:-13
宏功能如何在此处将输出设为-13?
答案 0 :(得分:1)
SQR
内的表达式获得3-4*3-4
,并且给定运算符的优先级,为您提供结果。这是宏中常见的错误。原则上,如果涉及一些计算,每个参数都应该用括号括起来:
#define SQR(x) ((x)*(x))
您将获得预期的结果。