2014-11-05 11 views
5

sto traducendo una funzione che ho scritto qualche tempo fa in pitone C++ quando ho notato che il mio codice C++ contiene le seguenti righe:Letterale "o" nel programma C++?

if(MIsScaledOut()) { 
    if(DataType()==UnknownDataType or DataType()==h) 
     Descriptor = Descriptor + DataTypeString() + "OverM"; 

c'è un or in là! Questo probabilmente perché ho tradotto in precedenza da Python e ho dimenticato di passare a ||.

Questo codice viene compilato in vari sistemi operativi, con vari compilatori e non ho mai riscontrato alcun problema. È questo standard, o sono appena diventato fortunato finora, e questo è qualcosa di cui dovrei preoccuparmi?

+3

È davvero triste che tutti usino '||' e '&&' invece di 'and' e' or'. – Elazar

+2

@Elazar: Ciò che è triste è che gli identificatori perfettamente cromogeni, che appaiono spesso in logica, sono stati resi non disponibili in tutti gli ambiti. –

+3

È sempre divertente imbastire una lingua. [Scusate; Ho appena dovuto ...] – Mike

risposta

8

Dopo aver ricordato la parola giusta per google, ora vedo che it is listed as a C++ keyword, insieme a varie parole chiave simili come and che non avevo mai visto (notato?) Prima in C++. Il reason these exist è perché ci sono codifiche che non hanno alcuni dei caratteri di punteggiatura richiesti utilizzate dal tradizionale grafie dell'operatore: {, }, [, ], #, \, ^, |, ~.

Come per @mafso, le versioni alternative "enunciate" possono essere utilizzate in C includendo l'intestazione <iso646.h>, che è defines them as macros.

The question di cui questo è stato contrassegnato come duplicato indica anche l'esistenza di digraphs and trigraphs, che può essere utilizzato per sostituire i caratteri mancanti. (Quella domanda dice anche "tutti sanno di loro." Ovviamente, non l'ho fatto ...)

+1

Ricordarsi di fare clic sul segno di spunta per chiudere la domanda. –

+0

Dato che questo è anche codificato con C, si può notare che non sono parole chiave (ad esempio scrivere 'int e = 42;' è legale), ma sono forniti come macro se '' è incluso (cf C11 (n1570) 7.9). – mafso

+0

@ThomasMatthews Devo aspettare due giorni per accettare la mia risposta. : \ – Mike

Problemi correlati