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 >= 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++ 最小和最大运算符(<?
和 >?
)及其复合形式(<?=
和 >?=
)已被弃用,并且将在未来版本中删除。使用这些运算符的代码应修改为使用 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++ 条件运算符的主要内容,如果未能解决你的问题,请参考以下文章