此问题在此处已有答案:
How does the ternary operator work?(12个答案)
1年前关闭。
我有一个关于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呢?
2条答案
按热度按时间2uluyalo1#
它不是“问题B”,即三元运算符的语法
在您的例子中,在宏替换之后,您的代码实际上变成了
因为
x - y
是7,所以它不是0
,所以这是真的。接下来执行true_expr
,在您的情况下是(x + y / x - y)
。替换值,这计算为10 + 3 / 10 - 3
=〉10 + 0 - 3
,这减少到7
。bn31dyow2#
三进制运算符是if-else的简化版本
return (b? (a / b) : (a + b)
会是
一般来说,三元运算符看起来像这样:
(expression ? if_expression_is_true : else)
所以
b?
就是b
表达式