2013-06-08 14 views
9

In C++, possiamo scrivere and per &&, or per ||, bitand per & e bitor per |.Puoi sostituire & con bit e nei riferimenti?

Ora mi chiedo se and e bitand sono validi solo se tali operatori si intendono, o anche il luogo dove i riferimenti sono definiti (g ++ 4.6.3 accetta bitand i riferimenti - riferimenti rvalue non sembra essere supportata in quella versione - ma naturalmente quello potrebbe essere semplicemente il compilatore che non ha rilevato l'errore).

In breve: il seguente codice è valido C++?

int and x = 3; 

int a; 
int bitand y = a; 

Naturalmente non avrei mai scrivere tale codice (tranne forse se partecipare ad un concorso di codice offuscato), ma è in realtà valida?

+3

Si potrebbe compilarlo e scoprire, no? – STLDeveloper

+0

'and',' bitand', ecc. Sono solo macro. Puoi usarli dove preferisci, quindi sì, puoi farlo. – Dave

+0

(p.s. "eccetto forse se si partecipa a un contest con codice offuscato": è già stato fatto: P) – Dave

risposta

11

Secondo C++ 11, 2,6/4:

Sotto tutti gli aspetti della lingua, ogni token alternativa comporta lo stesso, rispettivamente, come suo principale segno

Così int and a = 5; è perfettamente valido, anche se anche perfettamente folle.


Altri esempi:

struct ete 
{ 
    compl ete(); 
    int egr()and; 
}; 
Problemi correlati