【问题标题】:How to understand ternary operator? For example #define MAX(x, y) ((x) > (y) ? (x) : (y)) [closed]如何理解三元运算符?例如#define MAX(x, y) ((x) > (y) ? (x) : (y)) [关闭]
【发布时间】:2021-07-24 10:56:13
【问题描述】:

我看到有人写了这段代码#define MAX(x, y) ((x) > (y) ? (x) : (y)) 什么意思?

【问题讨论】:

  • 有什么不明白的?如果 x 大于 y,则最大值为 x,否则为 y。是三元运算符还是你看不懂的#define? (为什么所有这些括号?)
  • 这能回答你的问题吗? How do I use the conditional (ternary) operator?

标签: c conditional-operator


【解决方案1】:

这里它检查x是否大于y如果是则x否则y

让我们看一个例子来理解它

int max = x > y ? x : y

这只是意味着

if (x > y)
  max = x
else 
  max = y

【讨论】:

    【解决方案2】:

    Ternary Operator 是编写 if-else 的语法糖。您可以将其视为( expression )? (result to be stored if true): (result to be stored if false)。所以回答你的问题#define MAX(x, y) ((x) > (y) ? (x) : (y)) 如果 x 大于 y 则返回 x,否则返回 y。

    编辑: 更改了参考链接,并改写了句子。

    【讨论】:

    • 称为条件运算符,不是三元运算符。你应该已经链接了你链接的页面。
    • “返回”一般表示语句从函数调用返回。这是在讨论表达式时使用的误导性术语。运算符具有结果值或产生结果或计算结果。它不返回值。
    • 谢谢,我更改了链接。我记得把它读作“三元”或“条件”运算符,因此我使用了这个词。 @EricPostpischil 感谢您对退货的澄清,会更改它。
    猜你喜欢
    • 1970-01-01
    • 2016-12-29
    • 2013-04-22
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多