c - C 中的预处理器指令
问题描述
为什么下面程序的输出是 125 而不是 5?
#include<stdio.h>
#define square(x) x*x
int main()
{
int var;
var = 125/square(5);
printf("%d",var);
return 0;
}
解决方案
这一行:
var = 125/square(5);
扩展为:
var = 125/5*5;
从左到右计算到25*5
然后到125
;
要修复它,请将 的定义中的参数用括号括起来square
,如下所示:
#define square(x) ((x)*(x))
还要注意额外的括号x
,以便在 eg1+2
被传递到时实现预期的行为square
。
推荐阅读
- javascript - 如何在 div 中保持移动的 div
- javascript - 什么构成此错误文本中的“交互”?play() 失败,因为用户没有先与文档交互
- java - JFrame 仅打开关闭、最小化和调整大小按钮,直到我调整窗口大小
- java - 使用 Comparable[] 作为参数创建插入排序方法时遇到问题
- php - 在python中压缩base64字符串并在PHP中提取它
- python - 这个装饰器类型注释是否正确?
- regex - 我如何向后看一个单词?
- amazon-web-services - 在 EC2 上创建 SSL 证书时出错
- powershell - 获取 YouTube 频道标题列表
- apache-spark - 将 jar 动态加载到 Jupyter 笔记本中的 Spark 驱动程序