PDA

View Full Version : [c/c++] semplificare le operazioni booleane


Duchamp
18-01-2011, 19:28
Ciao a tutti, spesso mi ritrovo a dover confrontare che una variabile sia in un range di valori:


if (var == COSTANTE_1 && var == COSTANTE_2 && var == COSTANTE_X || var == COSTANTE_Y)


Non so se più per comodità di scrittura o speranze di ottimizzazione, mi piacerebbe poter condensare il tutto come segue:


if (var == COSTANTE_1 & COSTANTE_2 & COSTANTE_X | COSTANTE_Y)


Ho già visto utilizzare questa tecnica, solo che non saprei come trattare le costanti (uso tutti #define) in modo che possano essere "orate" o "endate" :)
Spero possiate darmi qualche suggerimento. Ciao e grazie!

FrancoBross
18-01-2011, 20:55
var è una variabile booleana?

costante la definisci con la #define perchè cos'è?

Qual'è l'ordine di controllo perchè come hai scritto in alto funzionerebbe cosi...
var == COSTANTE_Y
risultato || costante_X quello che viene chiamiamolo risultato
risultato == var quello che viene chiamiamolo risultato1
risultato1 && costante_2 quello che viene chiamiamolo risultato2
risultato2 == var quello che viene chiamiamolo risultato3
risultato3 && costante_1 quello che viene chiamiamolo risultato4
risultato4 == var quello che viene chiamiamolo risultato5

costante_x | costante_y quello che viene chiamiamolo risultato
risultato & costante_2 quello che viene chiamiamolo risultato1
risultato1 & costante_1 quello che viene chiamiamolo risultato2
risultato2 == var

diciamo anche che &<---questo è diverso da &&<---questo servono a cose diverse

comunque il risultato è diverso.... magari se spieghi meglio come deve venire vediamo di semplificare....

AngeL)
18-01-2011, 21:05
http://en.wikipedia.org/wiki/Bit_field

buona lettura :D