什么是<! - ?=在C ++中? - >

时间:2011-01-19 10:55:20

标签: c++

  

可能重复:
  C extension: <? and >? operators

看看这个Google Code Jam的问题D的最佳答案(通过sclo)。它是C ++代码,它必须已经编译,并且它包含诸如此类的语句:

double& ret = F[mask][cur][b];
if(j==cur) {
  ret<?=f(tmp,j,b||bad[i])+M[cur][i];   // WTF is <?=   ???
}

这不能在我的Visual Studio 2008中编译。<?=是什么意思?

4 个答案:

答案 0 :(得分:19)

这是一个gcc扩展名:C extension: <? and >? operators

  

最近的手册say

     
    

G ++最小和最大运算符('<?'和'>?')及其复合形式('<?=')和'>?=')已弃用,现已从G ++中删除。应修改使用这些运算符的代码,以使用std::minstd::max代替...

  

答案 1 :(得分:3)

这根本不是有效的C ++。 <可能小于,模板参数列表的开放角括号,或者有向图的开头,但不是?,然后是=

答案 2 :(得分:3)

这是c ++语言现在已弃用的g ++扩展。

a <? b 是最小值,返回数值a和b中较小的一个;

a >? b 是最大值,返回数值a和b中较大的一个。

还有复合版本

<?=

>?=

也可以进行作业。

答案 3 :(得分:0)

它也不能用GCC编译,我从未听说过运算符<?=

无论如何,我会猜测a<?=b可能有一个像a = (a<b) ? b : a这样的语义,但同样,这只是猜测。