繁体   English   中英

条件运算符语法

[英]Conditional operator syntax

我已经阅读了整整一整天的C ++ Primer,并停留在我不小心键入的这段代码中:

int max = 5, min = 4;
max = (max > min) ? max : min;

对于我来说,将其视为max = max;变得非常max = max;

根据我的理解,右侧max成为一个右值,因此它仅仅是一个值5 我一点也不知道

有人可以用简单的语言向我解释这是什么语法吗?

作为新手,我认为我无法理解过于复杂的答案。
提前谢谢了!

这个表达没有什么奇怪的

max = max;

因为没有要求右边一定是右值,所以它经常碰巧是右值。

例如,这是从一个左值到另一个左值的典型副本

int x = 5;
int y;
y = x;

在这种情况下, x不是右值,而是出现在右侧。 它只是用于复制分配给y

因此,在您的三元表达式中, max = maxmax = min是可能发生的两个赋值,并且都是使用左值的赋值。

表达方式:

max = (max > min) ? max : min;

可以分解为:

if (max > min) {
    max = max;
} else {
    max = min;
}

因此,什么是发生的事情是max相比min和哪个其他获得分配到更大的 max max大于min的情况下,最后一个操作称为自赋值:

max = max;

根据标准,这是完全合法的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM