C++ 条件运算符

8
我曾经看到过一个使用C++的“有线”运算符,如果大于某个值,则赋值。 它是由?<=组合而成。
例如:如果value大于x,则将x的值设置为value。
不是指x=(x<value)x:value
它类似于x<?=value
但我无法确切地记住它,也找不到在线上的相关信息...能否有人提醒我一下呢?
谢谢。

2
if (value > x) x = value; 这个怎么样? - GManNickG
@GMan:我知道...但我真的很好奇想要记住它... - Betamoo
https://dev59.com/NW435IYBdhLWcg3w0ThP - Lightness Races in Orbit
7个回答

11

没有一种运算符可以根据变量的相对值来进行赋值。

但是,有一个三目运算符:?:

x = value > x ? value : x;

如果你从左到右大声读出来,它就有意义了。


8

gcc在至少版本3.3.6中引入了一个gcc特有的语言扩展,提供了专门用于实现min和max的运算符。也许这就是你想要的东西?

C++中的最小值和最大值运算符

我手边没有gcc来测试,但它可能也有更新的形式。


2
值得注意的是,以下内容已被弃用:“G++最小值和最大值运算符(<?>?)及其复合形式(<?= >?=)已被弃用,并将在未来版本中删除。使用这些运算符的代码应修改为使用std::min和std::max。”--http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Deprecated-Features.html - Magnus Hoff
1
@Betamoo:选择这个吧。所有的信息都在这里。至少现在是的 :) - Magnus Hoff
看起来我没有选择正确的搜索词来选择弃用通知,抱歉。(这些已经存在一段时间了--我记得它们是从90年代中期我在使用DOS的djgpp时开始的...--并且没有被纳入标准或任何其他编译器,所以很可能只是时间问题,有人将它们淘汰掉 :) - please delete me

4
这样可以吗:
(x<value) || (x=value)

1
有人喜欢使用 Perl :-) - Martin York

1

是的,它确实存在。除了它不叫做三元运算符(任何具有三个操作数的运算符都是三元的),而是条件运算符。 - user395760
1
由于C&C ++中只有一个三元运算符(目前为止?),我认为每个人都会很清楚你在谈论什么... - Eugen Constantin Dinca
5
实际上,这个运算符被普遍称为“三元运算符”。C/C++/Java和大多数其它编程语言只有一个符合“三元”的运算符,而这就是它。 - corsiKa

0
x = x < value ? 0 : 1;

此函数将 x 设置为 0,如果 x < value,则为 1。


实际上,在这种情况下,您可以使用 x = x >= value 来完成此操作,true 评估为1。 - KillianDS

0

它是一种更方便的if语句版本,用于赋值

int x = (some bool) ? trueval : falseval;

大致意思是当bool值被评估时,根据结果它会得到trueval或falseval,这比直接说更容易理解。

int x;
if (someval)
    x = trueval;
else
    x = falseval;

0

我猜你想到的是gcc扩展1,它允许你省略条件运算符的中间操作数,例如:

a = b ? b : c;

可以写成:

a = b ?: c;

1尽管URL中有“2.95.3”,但我不知道链接页面是否有更新版本。如果有人知道,请随时指出(或进行编辑)。


1
那个运算符有时让我希望 || 能够这样工作。虽然有时将“真”值强制为“1”很有用,但在其他情况下,拥有第一个非零操作数的值会更有用。 - supercat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接