我正在查看一些代码并看到类似这样的内容:
int d = 1;
int somethingbigger = 2;
d >?= somethingbigger;
cout << d << endl;
我认为这应该输出2.但我甚至无法用gcc 4.5.2编译它。 该代码编写于2005年,使用gcc 3.4.4编译(不是100%肯定)。
有人可以解释这是如何工作的,以及为什么我不能用最近的编译器编译它。
答案 0 :(得分:13)
这是“最大”赋值运算符a GCC extension。
如果未启用扩展程序,则您将无法使用此功能。
G ++最小和最大运算符(
<?
和>?
)及其 复合形式(<?=
)和>?=
)已被弃用 在将来的版本中删除。使用这些运算符的代码应该是 修改为使用std :: min和std :: max。
答案 1 :(得分:5)
那不是C ++代码。
它使用的是仅限gnu的扩展程序,并且完全不可移植。
只需将其替换为符合标准的代码:
if (d < somethingbigger) d = somethingbigger;
答案 2 :(得分:0)
d = (d < somethingbigger) ? somethingbigger : d;
有一段时间没有看到这个,我很确定这是GCC的GNU扩展。