Domanda

Non ho fatto molto di programmazione C, ma quando lo faccio quando ho bisogno di un falso ho messo 0 quando voglio vero ho messo 1, (es. While (1)), in altri casi che uso le cose come "while ( PTR)" o "se (x)".

Dovrei provare utilizzando booleani C99, non li ho consiglierei ad altri se sto aiutando le persone nuove alla programmazione imparare c basi (pensando cs 1 ?? studenti)?

Sono abbastanza sicuro che i supporti del compilatore di Visual Studio C99 bools, ma faccio un sacco di progetti (open source e applicazioni c nell'industria) compilazione per C89? Se io non uso Caccio C dovrei almeno fare qualcosa di simile # define VERO 1 #define FALSE 0?

Anche per quanto riguarda C ++ booleani (per C ++)?

È stato utile?

Soluzione

In C ++ non c'è ragione di non usarlo. In C, io uso solo int per questo compito, senza alcuna #define o qualcosa di simile. Variabile-nomi come isDefinition sono abbastanza chiare per indicare quello che sta succedendo, a mio parere.

Naturalmente, non c'è niente di sbagliato con il proprio definire bool o utilizzando quelle di <stdbool.h>.

Altri suggerimenti

Sì, è necessario utilizzare le astrazioni linguistiche quando sono disponibili. Quando uso un compilatore C più grande ho ancora creare qualche astrazione di un bool. Utilizzando letterali nel codice è una pratica molto povera.

C ++ booleani vanno bene così come sono parte del linguaggio e sono supportati da pratica qualsiasi compilatore C ++ in questi giorni.

booleani C99 sembrare una buona idea, ma basta tenere a mente se il codice che si scrive oggi sarà mai bisogno di essere utilizzato in un progetto C89 ...

Il compilatore può fare una migliore ottimizzazione quando si conosce una variabile è booleana. Anche quando si usano interi è più facile introdurre bug quando viene utilizzato in un contesto bit a bit, come interi possono essere inavvertitamente impostati su valori diversi da 1

Usa bool in C ++. E 'stato lì per anni e ogni C ++ supporti informatici compilatore, Usalo in C se il codice richiede altre caratteristiche C99. Non utilizzare nel codice pre-C99, dal momento che qualsiasi valore diverso da zero verrà interpretato come vero, e utilizzando definisce può portare a bug che sono difficili da rintracciare (alcune funzioni di libreria C sono documentate a restituire qualsiasi int non nullo valore, e anche se è prassi generalmente scarsa a qualcosa di scrivere come

if (var==TRUE) { ... }

cose come questa potrebbe rompersi, e potrebbe anche comportarsi in modo diverso con diversi compilatori / sistemi operativi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top