首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下面的程序是如何工作的?

下面的程序是如何工作的?
EN

Stack Overflow用户
提问于 2014-05-27 20:16:50
回答 1查看 46关注 0票数 0
代码语言:javascript
复制
#include<stdio.h>
#define SQR(x) (x*x)
int main(){
int a;
a= SQR(3-4);
printf("%d",a);
return 0;
} 

输出:-13

这里的宏函数是如何给出-13的输出的?

EN

回答 1

Stack Overflow用户

发布于 2014-05-27 20:18:07

SQR内部的表达式得到3-4*3-4,并给出操作符的优先顺序,给出结果。这是宏中的一个常见错误。原则上,每个参数都应该用括号括起来,如果它涉及一些计算:

代码语言:javascript
复制
#define SQR(x) ((x)*(x))

您将获得预期的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23889225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档