2011-01-19 19 views
13

Duplicar posibles:
C extension: <? and >? operators¿Qué es <? = En C++?

Tome un vistazo a la respuesta superior (por sclo) a un problema D de este Google Code Jam. Es de código C++, tiene que haber compilado, y contiene afirmaciones como ésta:

double& ret = F[mask][cur][b]; 
if(j==cur) { 
    ret<?=f(tmp,j,b||bad[i])+M[cur][i]; // WTF is <?= ??? 
} 

Esto no se compila en mi Visual Studio 2008. ¿Qué significa la <?=?

+0

¿Podría ser código C++ 0x? Si es así, no se puede compilar en VS2008. – Rafid

+0

No lo sé, las extensiones de archivo son CPP. He perdido el contacto con el lenguaje C++ hace unos años. – ripper234

+0

Debe ser un error tipográfico, ni g ++ ni clang ++ lo reconoce. – ismail

Respuesta

19

Es una extensión gcc: C extension: <? and >? operators

manuales recientes say:

los operadores máximo y mínimo G ++ y ('<? 'y' >? ') y sus formas compuestas (' <?=') y '>?=') han quedado en desuso y ahora se eliminan de G ++. Código utilizando estos operadores debe ser modificado para utilizar std::min y std::max lugar ...

+2

+1: Eliminado de GCC en torno a la versión 4 (de la página de respuestas en los enlaces). – xk0der

0

No se compila también con GCC, y nunca he oído hablar de un operador <?=.

De todos modos, me atrevería a suponer que a<?=b podría tener una semántica como: a = (a<b) ? b : a, pero de nuevo, esto es solo una suposición.

3

Simplemente no es válido C++. < Puede ser menor que, un corchete de ángulo abierto para una lista de argumentos de plantilla, o el comienzo de un dígrafo; sin embargo, a ninguno de ellos le puede seguir ?, luego =.

3

Es un g ++ extensión ahora obsoleto al lenguaje C++.

a <? b es el mínimo, devolviendo el menor de los valores numéricos a y b;

a >? b es el máximo, devolviendo el mayor de los valores numéricos a y b.

También hay versiones compuestos

<?=

y

>?=

que hacer asignación también.