2011-05-21 87 views
4

可能重复:
What does the >?= operator mean?如何使'<?='在C++中可用?

我发现这个代码段

... 
for(k=i+1;k<j;k++) r <?= go(i,k,b)+go(k,j,b); 
for(k='A';k<='Z';k++) r <?= 1+go(i,j,k); 
... 

我感兴趣的<?=运营商。在我看来,它应该将r的值与运营商的右侧相比较,并且在右侧大于r的情况下,它应该将右侧分配给r。我想知道这个(以及类似的操作符,我想是)在哪里定义的,我该怎么做才能使它们可用于g ++编译器?

+1

很可惜,这没有标准的操作符。我经常使用这种类型的赋值,以至于我倾向于将它作为一个成员函数'numclass :: push_downto(const numclass&)'包含在类数类中,但这不是一种很好的风格,你根本就做不到对于普通的原始类型。 – leftaroundabout 2011-05-21 01:07:07

+0

这是最小的估算算子,如果右侧较小,则分配该值 – hirschhornsalz 2011-05-21 01:31:08

回答

16

<?=运算符是在版本4.2中删除的GCC扩展。请参阅this question

改为使用std::min

+1

+1正确,先生。 – 2011-05-21 00:49:27

2

我不认为这是一个有效的C++运算符

+1

不是标准的,而是一个扩展。 – 2011-05-21 00:48:48

+2

@Tomalak:...所以它不是一个有效的*标准* C++操作符。这不值得赞赏。 – 2011-05-21 00:53:55

+0

这是一个非常有效的C++操作符。如果答案正确指定了标准vs扩展,那就是正确的。而且,为了它的价值,我没有降低它的价值。 – 2011-05-21 01:54:12

0

不可行。 C++支持的运算符是固定的,您不能添加新运算符。

+1

执行扩展可以。 – 2011-05-21 00:48:54

+3

GCC是* NOT * C++。该标准没有定义这样的运营商。 – 2011-05-21 00:51:23

+0

“C++”可以理解为“标准C++”或“实用C++”。没有限定词,这是不明确的。 – 2011-05-21 01:55:05