【问题标题】:what does "a<?=b" in C++ mean? [duplicate]C ++中的“a <?= b”是什么意思? [复制]
【发布时间】:2014-03-26 18:12:59
【问题描述】:

我看到了这段代码

a<?=b; // (a and b are int)

来自 Google Code Jam 的解决方案。

但是我的 VS 在 '?' 上显示错误

我只知道以下几点:

a>b?a=0:b=0;

谢谢。

【问题讨论】:

标签: c++ syntax


【解决方案1】:

老运营商;它是“最小”的(已删除)gcc 扩展。那就是:

a <?= b;

等同于:

a = a < b ? a : b;

【讨论】:

  • 哇,我确定那是无效的
  • 我猜它不是 C/c++ 有效的,但它是 gcc 有效的(或者是 gcc 有效:))
  • @jeremy 问题是关于 c++
  • @jeremy:正如 OP 所发现的,编译器扩展在其他编译器上可能无效。 (不过是一个非常酷的运算符。我确定我可以在这里或那里使用它。)
【解决方案2】:

对 C++ 的非标准 GCC 扩展允许将 &lt;? 作为运算符,等效于 min。我以前没见过&lt;?=,但大概是就地版本;也就是说,a &lt;?= b 等价于a = min(a,b)

请注意,GCC 开发人员第二天早上醒来后意识到这是一个多么糟糕的主意。该运算符现已弃用。

【讨论】:

    【解决方案3】:

    如果 a 恰好大于 b,它会将 a 设置为 b。

    基本相同:

    a = a < b ? a : b;
    

    例子:

    int a = 5;
    int b = 2;
    a<?=b; //a is now 2!
    

    我不提倡实际使用这样的解决方案,这太可怕了。

    正如其他人所说,它是非标准 GCC 扩展的一部分,但请不要使用它。

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2013-12-16
      • 2011-11-21
      • 2020-02-09
      相关资源
      最近更新 更多