【问题标题】: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}); 反正更清晰。

标签: c++ syntax conditional-operator


【解决方案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 } );

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2017-12-09
    • 2020-11-05
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2015-12-09
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多