2011-01-19 8 views
13

Eventuali duplicati:
C extension: <? and >? operatorsChe cos'è <? = In C++?

Date un'occhiata alla risposta superiore (da SCLO) al problema D di questo Google Code Jam. E 'il codice C++, deve essere compilato, e contiene affermazioni come questa:

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

Questo non viene compilato nel mio Visual Studio 2008. Che cosa significa il <?= significa?

+0

Potrebbe essere codice C++ 0x ?! Se lo è, non può essere compilato in VS2008. – Rafid

+0

Non lo so, le estensioni dei file sono CPP. Ho perso il contatto con il linguaggio C++ alcuni anni fa. – ripper234

+0

Deve essere un refuso, né g ++ o clang ++ lo riconosce. – ismail

risposta

19

Si tratta di un'estensione gcc: C extension: <? and >? operators

manuali recenti say:

Il G ++ minimo e operatori massimo ('<? 'e' >? ') e le loro forme composte (' <?=') e '>?=') sono stati deprecati e ora vengono rimossi da G ++. Codice utilizzando questi operatori deve essere modificato per utilizzare std::min e std::max invece ...

+2

+1: rimosso da GCC attorno alla versione 4 (dalla risposta sulla pagina collegata). – xk0der

0

Non si compila anche con GCC e non ho mai sentito di un operatore <?=.

In ogni caso azzarderei un'ipotesi che a<?=b possa avere una semantica del tipo: a = (a<b) ? b : a, ma ancora una volta, questa è solo un'ipotesi.

3

Semplicemente non valido C++. < Potrebbe essere inferiore a, una parentesi angolare aperta per un elenco di argomenti modello o l'inizio di un digramma, tuttavia non di quelli può essere seguito da ?, quindi =.

3

E 'un g estensione ormai deprecato ++ per il linguaggio C++.

a <? b è il minimo, restituendo il più piccolo dei valori numerici aeb;

a >? b è il massimo, restituendo il maggiore dei valori numerici a e b.

ci sono anche le versioni composte

<?=

e

>?=

che lo fanno assegnazione pure.