这行三元运算符的语法是啥

Posted

技术标签:

【中文标题】这行三元运算符的语法是啥【英文标题】:What's Syntax about this line of Ternary Operator这行三元运算符的语法是什么 【发布时间】:2020-04-12 10:36:07 【问题描述】:

我尝试了很多次来了解它的工作原理或语法代码是什么?

greatest=(a>b&&a>c)?a:(b>c)?b : c;

我知道三元运算符的主要语法

但最大的我不知道它是怎么来的

必需的 我想向任何人解释一下,并给我它们的语法。

谢谢。

【问题讨论】:

如果你已经知道三元运算符的语法,那还有什么需要解释的? 格式化表达式可能会有所帮助。 你为什么要写greatest=(a>b&&a>c)?a:(b>c)?b : c;之类的东西?我的意思是,如果你初始化一个变量,我可能明白为什么,但这甚至不是你正在做的。为什么不把它写成更易读的if / else 语句呢?编译器不会在意,生成的代码可能是相同的,但对于您的人类同胞来说,它的可读性会很多 @JesperJuhl: 甚至 std::max 而不是手动 if 或三元运算符 ;-) auto greatest = std::max(a, b, c); 反正更清晰。 【参考方案1】:

此运算符本质上类似于这些 if-else 语句

if ( a > b && a > c )

    greatest = a;

else if ( b > c )

    greatest = b;

else
 
    greatest = c;

要使具有两个嵌套条件运算符的表达式更清晰,请使用括号

greatest = ( a > b && a > c ? a: (  b > c ? b : c ) );    

您可以使用标准算法std::max 代替具有两个嵌套条件运算符的表达式。例如

greatest = std::max(  a, b, c  );

【讨论】:

以上是关于这行三元运算符的语法是啥的主要内容,如果未能解决你的问题,请参考以下文章

三元表达式是啥?

爪哇“?”用于检查 null 的运算符 - 它是啥? (不是三元!)

将三元运算符拆分为多行的推荐布局是啥?

Java三元运算符语法[重复]

三元运算符;这种语法有啥问题?

jQuery 语句中的三元运算符