c - C中的三元运算
问题描述
我有一个关于 C 中三元运算的技术问题。假设我们有以下程序:
#include <stdio.h>
#define M(a, b) (b? (a / b) : (a + b))
int main()
{
int x = 10, y = 3;
printf("%d\n" , M(x + y , x - y));
}
在宏观上,问题b的含义是什么?另外,我知道最终的答案是 7,但是 7 是怎么回事?
解决方案
不是“问题b”,而是三元运算符的语法
expr ? true_expr : false_expr
在你的情况下,宏替换后你的代码真的变成了
int main()
{
int x = 10, y = 3;
printf("%d\n" , (x - y? (x + y / x - y) : (x + y + x - y));
}
因为x - y
是 7,所以这成为真的,因为它不是0
。true_expr
在您的情况下执行下一个(x + y / x - y)
。替换值,这将计算为10 + 3 / 10 - 3
=> 10 + 0 - 3
,它减少为7
。
推荐阅读
- excel - 将任何日期添加到相应单元格时,如何编写公式以删除excel中单元格中的值
- python-3.x - 如何使用 tf.gather 从第一个轴切片值?
- c - GStreamer C 库在 Xubuntu 上无法正常工作
- java - 实施 Runnable 未显示正确结果
- r - 绘制变量是否唯一
- json - 如何将 JSON 对象中的字符串列表转换为 Spring Boot 中实体上的列表?
- r - 根据输出以不同长度分割折线
- xamarin - Xamarin iOS 实现 Gelf4Net
- google-apps-script - 如何修改使用 Google 表格中的脚本创建的选项卡中的单元格内容
- java - DSpace - 如何为我想要导入/或通过 GUI 导入的项目添加额外的(非知识共享)许可证?