2012-06-28 11 views
5

Qual è lo scopo delle seguenti parole chiave?Qual è lo scopo delle parole chiave 'and', 'o', ecc. In C++?

and  bitand compl not_eq or_eq xor_eq 
and_eq bitor not  or  xor 

Se tutto quello che sono è un equivalente diretto di:

&&  &  ~  !=  |=  ^= 
&=  |  !  ||  ^
+2

Non tutte le tastiere hanno 'e', '~', '|', ecc chiavi. – ildjarn

+1

Vedere [iso646.h] (http://en.wikipedia.org/wiki/Iso646.h) –

+3

@Matt: anche se ho sorpreso alcuni colleghi, generalmente preferisco 'not' a'! '. '!' è quasi invisibile, 'not' (che richiede uno spazio dopo di esso) si distingue. –

risposta

13

http://en.wikipedia.org/wiki/Iso646.h

iso646.h " ... definisce una serie di macro che permettono ai programmatori di utilizzare il linguaggio C bit per bit e operatori logici, che, senza il file di intestazione, non possono essere digitati rapidamente o facilmente su alcune tastiere internazionali e non QWERTY.

Il nome file si riferisce allo standard ISO646, un set di caratteri a 7 bit con un numero di varianti regionali, alcuni dei quali hanno caratteri accentati al posto dei segni di punteggiatura utilizzati dagli operatori C. "

+6

E in C++ questi non sono macro, ma "token alternativi" e non è necessario includere iso646.h. – bames53

+1

... ma è una soluzione ritardata in quanto non è ancora possibile programmare C++ senza i caratteri &, ~ e | anche con questi token alternativi –

+0

@RafaelBaptista Sì, è possibile. 'int const bitand answer = 42;' è una dichiarazione di variabile valida. –

7

sua in modo da poter scrivere poesie codice folli come:

class jack 
{ 
    jack(); 
    jack(jack & jill); 
    jack& came_tumbling(int after); 
    jack& fell(jack & jill); 
    jack& operator &= (jack & jill); 
    jack& operator & (jack & jill); 
} 

void to_fetch(int pail); 

int a_pail; 
int after; 
jack broke_his_crown; 
jack went_up_the_hill; 
jack down; 

jack and jill = went_up_the_hill; 
to_fetch(a_pail); // of water 
jack fell(down and broke_his_crown 
and jill.came_tumbling(after)); 
+0

Le poesie che scrivere non sono esattamente appropriate per l'inclusione nel nostro repository di codice;) –

+0

Tutti speriamo che in C++ 12 aggiungeranno un token per Nantucket –

+1

L'unico problema con questo snippet è che 'and' è equivalente a' && ', non' & '...: P – Griwes