这行三元运算符的语法是啥
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 );
【讨论】:
以上是关于这行三元运算符的语法是啥的主要内容,如果未能解决你的问题,请参考以下文章