Jas*_*per 4 c++ compiler-construction conditional
我在看一些代码并看到这样的东西:
int d = 1;
int somethingbigger = 2;
d >?= somethingbigger;
cout << d << endl;
Run Code Online (Sandbox Code Playgroud)
我认为这应该输出2.但我甚至无法用gcc 4.5.2编译它.该代码是在2005年编写的,并使用gcc 3.4.4编译(不是100%肯定).
有人可以解释这是如何工作的,以及为什么我不能用最近的编译器编译它.
Lig*_*ica 13
这是"最大"赋值运算符,是GCC扩展.
如果未启用扩展程序,则您将无法使用此功能.
G ++最小和最大运算符(
<?和>?)及其复合形式(<?=)和>?=)已被弃用,将在未来版本中删除.应该修改使用这些运算符的代码以使用std :: min和std :: max.
看起来他们已经走了4.0.4.
那不是C++代码.
它使用的是仅限gnu的扩展,并且完全不可移植.
只需将其替换为符合标准的代码:
if (d < somethingbigger) d = somethingbigger;
Run Code Online (Sandbox Code Playgroud)