2010-08-12 9 views

risposta

5

C non ha un tipo bool. È possibile utilizzare int invece, utilizzando 0 per false e 1 per true.

+0

Pensavo che C99 fosse C. –

+0

C99 ha bool. #include ninjalj

+0

Sì, C ha un tipo di bool. È _Bool e può essere utilizzato facendo #include . Ricorda, C99 _IS_ C. –

35

Hai semplicemente bisogno di #include <stdbool.h>.

-2

In C99 è presente un tipo bool. Ma mi chiedo perché non puoi scrivere il tuo codice in C++. Non è necessario utilizzare tutte le funzionalità avanzate di OOP di C++. Puoi scrivere il codice "C style" e compilarlo con un compilatore C++.

+0

+1. Risposta sensata. C'è poco che un compilatore C possa fare che non sarà accettato da un compilatore C++, il compilatore C++ ha caratteristiche ottimali sopra C (come, hey, bool) ed è più rigido sulla sicurezza del tipo rispetto alla sua controparte C. E potrebbe essere un buon modo per imparare alcuni trucchetti C++ (come avere una struct C inizializzarsi tramite un costruttore ...) – paercebal

+4

C++ non è un sostituto per C. See => array di lunghezza variabile, macro variadic, snprintf, designati inizializza. –

+3

Non avrò downvote perché sei nuovo, ma in generale non dovresti suggerire a qualcuno di cambiare la loro lingua, nemmeno da C a C++. – Potatoswatter

0

char non firmato è in genere una scelta migliore per un bool rispetto a un int, in particolare se si dispone di una matrice di 1000 di essi. Sebbene dipenda dall'implementazione di quanto è grande un char non firmato e da come verrà assemblato l'array.

+0

No. Di solito è più lento e mai più veloce. –

+0

È corretto che la velocità di accesso sarà generalmente un po 'più lenta, ma l'importanza della velocità di accesso dipende dalla frequenza e dalla modalità di accesso dell'array. I risparmi di memoria potrebbero essere molto più importanti. Se sei vincolato alla CPU o se la memoria è vincolata è qualcosa da considerare. La mia ipotesi è che è più probabile che la differenza nella velocità di accesso non venga notata, ma si noterà la memoria extra occupata dall'array. Tutto dipende dallo scenario d'uso. – david

2

Se un tipo non è definito nel proprio ambiente, è possibile definire i propri tipi, anche bool, ad es.

typedef enum {false,true} bool; 
Problemi correlati