2011-03-04 22 views
36

Mirando a través de esta biblioteca C++ BigInt y encontró el archivo BigInt.cpp. En la parte superior hay un comentario en la parte superior de la compatibilidad:¿Qué significa el operador>? =?

Esta clase fue escrito para el compilador g ++ y utiliza algunos de los g extensiones ++ (como "doble largo" y el "> =?" Operador).

¿Qué significa eso >?= operador? No puedo encontrar una referencia en ningún otro lado.

+6

doble largo no es una extensión g ++ ... –

Respuesta

42

Es una extensión de GCC que se eliminó en GCC versión 4.2 y posterior.

El equivalente de a >?= b es a = max(a,b);

También hay un operador muy similar a <?= b que significa lo mismo que a = min(a, b);.

14

This page describe que >? es el operador 'máximo', que devuelve el mayor de sus dos argumentos numéricos. Supongo que el >?= combina esto con la asignación, presumiblemente asignando al operando de la izquierda si el valor de la derecha es más grande.

+0

tim, suena plausable - y muy probable, por tanto, 1 :) –

+1

Tiene sentido que usen '>?' Para el operador máximo, ya que el máximo se puede calcular en un C++ normal como este: 'max = lhs> rhs? lhs: rhs'. –

+10

¿Extensiones de lenguaje específicas del compilador? Pensé que solo los MS eran lo suficientemente tontos como para hacer eso. ¡Abucheo! ¡Silbido! –

3

Ver C extension: <? and >? operators

Es el max-entonces-asignar operador: Tome el mayor de los lados izquierdo y derecho y esas cosas de nuevo en el lado izquierdo.

Se elimina de g ++ y debe ser reemplazado con max (o min para <?=)