C++ 条件运算符

Posted

技术标签:

【中文标题】C++ 条件运算符【英文标题】:C++ Conditional Operator 【发布时间】:2011-03-21 19:31:12 【问题描述】:

我曾经在 C++ 中看到过一个 -wired- 运算符,它在大于时赋值。 它是?<= 的组合

例如让 x = value 如果 value 大于 x

不是这个意思 x=(x<value)x:value

这是某种x<?=value

但是我记不太清了,网上也找不到……谁能提醒一下?

谢谢,

【问题讨论】:

if (value > x) x = value; 怎么样? @GMan:我知道...但我真的很想记住它... ***.com/questions/5199630/what-does-the-operator-mean 【参考方案1】:
x = x < value ? 0 : 1;

此函数设置 x 为 0 是 x

【讨论】:

实际上,在这种情况下,您可以使用x = x &gt;= value 来完成此操作,true 评估为 1。【参考方案2】:

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

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

这大概是什么意思,当布尔值被评估时,它会根据结果获得真值或假值,这比说容易

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

【讨论】:

【参考方案3】:

怎么样:

(x<value) || (x=value)

【讨论】:

有人喜欢使用 Perl :-)【参考方案4】:

我怀疑你在想的是一个gcc extension1,它可以让你把中间操作数留给条件运算符,所以(例如):

a = b ? b : c;

可以写成:

a = b ?: c;

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

【讨论】:

那个运算符是我有时希望的 ||工作。虽然有时将“真”值强制为“1”很有用,但有时将第一个非零操作数的值设置为更有用。【参考方案5】:

gcc 至少在 3.3.6 版本中具有 -- ! -- 一个 gcc 特定的语言扩展,为实现 min 和 max 提供专门的运算符。也许这就是你的想法?

Minimum and Maximum Operators in C++

我没有方便的 gcc 来测试它,但它也可能有一个更新表单。

【讨论】:

值得注意的是,这些已被弃用:“G++ 最小和最大运算符(&lt;?&gt;?)及其复合形式(&lt;?=&gt;?=)已被弃用,并且将在未来版本中删除。使用这些运算符的代码应修改为使用 std::min 和 std::max 代替。" -- gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Deprecated-Features.html @Betamoo:选择这个。所有信息都在这里。至少现在是:) 看起来我没有选择完全正确的搜索词来选择弃用通知,抱歉。 (这些已经存在了一段时间——我记得我在 90 年代中期在 DOS 上使用 djgpp 时记得它们......——并且还没有进入标准或任何其他编译器,所以它可能只是一个有人让他们摆脱痛苦只是时间问题:)【参考方案6】:

没有根据变量的相对值分配变量的运算符。

但是,有 ?: 运算符:

x = value > x ? value : x;

如果你从左到右大声读出来,那是有道理的。

【讨论】:

【参考方案7】:

你在想ternary operator吗?

result = a > b ? x : y;

【讨论】:

是的。除了它不是三元运算符(任何三个操作数的运算符都是三元运算符)而是条件运算符。 由于 C 和 C++ 中只有一个三元运算符(现在?)我想每个人都会很清楚你在说什么...... 实际上,它几乎被普遍称为三元运算符。 C/C++/Java/大多数其他语言只有一个运算符可以归类为三元,就是这样。

以上是关于C++ 条件运算符的主要内容,如果未能解决你的问题,请参考以下文章

带有 void 操作数的 C++ 条件运算符

具有范围解析和条件的 C++ 三元运算符

如果条件在c ++和python中执行运算符[重复]

在 C++ 中对布尔值使用位运算符

C ++中的运算符逗号?:条件

条件运算符,括号运算符以及instanceof运算符