#include<stdio.h>
#define SQR(x) (x*x)
int main(){
int a;
a= SQR(3-4);
printf("%d",a);
return 0;
} 输出:-13
这里的宏函数是如何给出-13的输出的?
发布于 2014-05-27 20:18:07
SQR内部的表达式得到3-4*3-4,并给出操作符的优先顺序,给出结果。这是宏中的一个常见错误。原则上,每个参数都应该用括号括起来,如果它涉及一些计算:
#define SQR(x) ((x)*(x))您将获得预期的结果。
https://stackoverflow.com/questions/23889225
复制相似问题