PDA

View Full Version : bool e c


blackknight
30-06-2005, 17:55
Ciao a tutti,devo studiare del codice in c per un esame dell'uni.Per quanto rigurda il codice nessun problema ma c'è una cosa che proprio non mi andava giu!!!
Ma esiste il tipo primitivo bool in c??Secondo la mia (modesta )esperienza con questo linguaggio so che non esiste,mentre è presente in c++.Allora perchè il mio prof continua a propinarmi quel codice come c??

Scusate la stipidità della domanda e considertela + che altro uno sfogo.Grazie a tutti

ilsensine
30-06-2005, 18:13
Non esiste nativo, anche se puoi definire tu qualcosa di simile.
Il c tratta qualsiasi espressione che vale 0 come false, e qualsiasi espressione diversa da 0 come true.

71104
30-06-2005, 18:14
il tipo bool in C non esiste, e in C++ per quanto mi riguarda meno lo uso e meglio è: sugli Intel generalmente ha le dimensioni di un byte ed il suo range di valori è forzato a 2 possibili valori (anziché 256). a parte il fatto che ci sono situazioni (sporadiche, dal momento che spesso si tratta di errori concettuali, però ci sono) in cui potrei voler assegnare un terzo possibile valore ad una variabile "booleana", ma poi usare un solo byte per i booleani non comporta nessun risparmio di tempo, e anzi: addirittura sapevo che alcuni Intel nel passaggio da operazioni sui 32 bit ad operazioni sul byte presentano (o presentavano, non so) degli stalli; il risparmio è solo di spazio, ma in genere per 3 byte non mi faccio problemi :D e di conseguenza preferisco il tipo BOOL di Microsoft :p
capitano a volte situazioni in cui devo memorizzare un elevato numero di variabili booleane (ad es. un array mooolto grande di strutture che contengono dei valori booleani): in tal caso non uso bool, uso BYTE (sempre di Microsoft :Prrr: :D), e la cosa può comportare sensibili risparmi di memoria.

VegetaSSJ5
30-06-2005, 21:37
il tipo _Bool è stato introdotto nel C99, ma io ti consiglio di ignorarlo. Assumi che false è 0 e true un qualsiasi altro valore (non inteso solo come numero, ma anche come carattere o qualsiasi altra cosa...)

blackknight
30-06-2005, 23:50
Grazie tante a tutti...seguiro il vostro consiglio per i miei progetti e imparero il codice del prof per l'esame!!
mi spiegate una cosa?

Se ho una funzione a cui io passo un a valore e che fa qualcosa;questa funzione poi restituisce un valore vero o falso.Ora per valutare il valore restituito dalla funzione in questione come faccio??

per esempio se ho :if (funzione(x) )....se il velore restituito per x è 0 allora l'istruzione if non esegue il blocco di istruzioni seguenti??cioè lo interpreta come false???

VegetaSSJ5
30-06-2005, 23:58
per esempio se ho :if (funzione(x) )....se il velore restituito per x è 0 allora l'istruzione if non esegue il blocco di istruzioni seguenti??cioè lo interpreta come false???
esattamente! infatti in c vedere cose del tipo if (trovato(x)) ... (trovato è un nome di una funzione di fantasia... :D) è molto molto frequente. anzi secondo me il fatto di non utilizzare per forza valori booleani ma valori qualsiasi aumenta la potenza del linguaggio.

blackknight
01-07-2005, 00:09
Gia devo esercitarmi di +!!! :D :D
Grazie per i consigli... ;)