a >?= b 的意思是什么?

29

我找到了下面的代码,但我不明白它是什么意思:

res>?=m[2];

这是我找到代码的位置以及一些背景信息。

vector<int> m(3);
int s = 0;
... do stuff with m ...
res>?=m[2];
return res;

1
链接仅对注册用户开放。您能告诉我res变量的类型吗? - klm123
3
这个问题在 Stack Overflow 上肯定已经有了答案。你可能会在这里找到我记得的那个链接。这是一个旧版的 GCC 扩展。 - chris
2个回答

37
这是一个旧的GCC扩展。 a >?= b 的等价形式是 a = max(a,b); 您可以查看C++中的最小和最大运算符 引用: 拥有返回两个参数的“最小值”或“最大值”的运算符非常方便。在GNU C++(但不在GNU C)中, a <? b 是最小值,返回数字值a和b中较小的值; a >? b是最大值,返回数字值a和b中较大的值。 顺便提一下:-
这些操作符是非标准的,在GCC中已经被弃用。您应该使用std::minstd::max

6
注意:此功能已被弃用:http://gcc.gnu.org/onlinedocs/gcc/Deprecated-Features.html - Peter de Rivaz
1
@klm123:- min(a,b); 将被写成 a <? b - Rahul Tripathi
1
运算符重载足够时,我们不需要任何扩展。 - TemplateRex

7

这显然不是标准的C++代码。我猜测这是赋值加三元运算符的简写,类似于赋值加二元运算符,如operator+=等:

 res = (res > m[2]) ? res : m[2];

您可以在此处阅读相关内容:C++语言的扩展

a <? b
is the minimum, returning the smaller of the numeric values a and b;
a >? b
is the maximum, returning the larger of the numeric values a and b.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接