c - C定义方法
问题描述
#define x 10 + 5
int main(){
int a = x*x;
printf("%d",a);
}
有人可以解释这些代码之间的区别吗?第一个输出是 65,第二个是 225:
#define x 15
int main(){
int a = x*x;
printf("%d",a);
}
解决方案
一切都与数学和 C 中运算符的优先级有关。
在第一种情况下,被x
替换为,等于 65。
正如评论中所建议的,您应该使用括号来避免这个问题。10 + 5
x*x
10 + 5 * 10 + 5
#define x (10 + 5)
int main(){
int a = x*x;
printf("%d",a);
}
推荐阅读
- apache-spark - Spark 作业状态正在运行,但第一步启动的时间几乎是 20 分钟后
- r - 使用 purrr 重命名 tibbles 列表中的不同列
- sharepoint - 更改 AD 后从用户信息列表中删除用户
- java - 在 R 3.6 上为 ubuntu 仿生海狸安装 rJava 时出现“无法运行简单的 JNI 程序”错误消息
- ios - ReactiveSwift 中 flatmap 策略之间的差异
- javascript - 如何用工厂函数组织Vue单元测试?
- grails - 禁用 Grails 4 加载文本
- matlab - 从 Matlab 中预先指定的概率质量函数中绘制随机数
- ios - swift facebook sdk注销功能不起作用
- c# - 如何在图片框中显示来自访问数据库的附件图像