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

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

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

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

这是某种x<?=value

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

谢谢,

【问题讨论】:

标签: c++ c operators conditional-operator


【解决方案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/大多数其他语言只有一个运算符可以归类为三元,就是这样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2015-07-12
      • 2023-04-03
      • 2010-10-26
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多