Bits mit switch case abfragen
-
HUHU,
gibts ne möglichkeit das switch/case für Bit abfragen zu verwenden?
int i= 0; i|=0x0001; i|=0x0002; i|=0x0008; switch (i){ case BIT 1: case BIT 2: case BIT 3: . . . . case Bit 32: }
-
Nein, switch arbeitet nur mit konstanten.
Da aber mehrere Zahlen ein bestimmtes bit gesetzt haben könnten klappt das nicht.Du musst das wohl mit if machen oder mach dir ein makro/funktion.
-
Vielleicht so. Aber toll ist das auch nicht.
unsigned bitmask = 0x0002; unsigned i = 0x00FF; switch(i & bitmask) //bitmask ist immer anzupassen { case 0x0001: break; case 0x0002: break; case 0x0004: break; /... default: break; }
-
Tachyon schrieb:
Aber toll ist das auch nicht.
das ist sogar völliger blödsinn.
-
fricky schrieb:
Tachyon schrieb:
Aber toll ist das auch nicht.
das ist sogar völliger blödsinn.
Grund?
PS: Wer selbst 99% Müll schreibt, sollte sich mit solchen Aussagen zurückhalten.
-
Tachyon schrieb:
fricky schrieb:
Tachyon schrieb:
Aber toll ist das auch nicht.
das ist sogar völliger blödsinn.
Grund?
willst du 2^32 cases hinschreiben?
Tachyon schrieb:
PS: Wer selbst 99% Müll schreibt, sollte sich mit solchen Aussagen zurückhalten.
so bin ich nun mal.
-
fricky schrieb:
Tachyon schrieb:
fricky schrieb:
Tachyon schrieb:
Aber toll ist das auch nicht.
das ist sogar völliger blödsinn.
Grund?
willst du 2^32 cases hinschreiben?
Tachyon schrieb:
PS: Wer selbst 99% Müll schreibt, sollte sich mit solchen Aussagen zurückhalten.
so bin ich nun mal.
Es ging um einzelne Bits. Im Falle des OP also höchstens 32x...
-
Tachyon schrieb:
Es ging um einzelne Bits.
ne, schau dir den code des OP mal an. er will alle bits finden. mit switch/case geht das nicht. eher sowas:
if (a & 1) { // bit 0 } if (a & 2) { // bit 1 } ... // usw.
-
fricky schrieb:
Tachyon schrieb:
Es ging um einzelne Bits.
ne, schau dir den code des OP mal an. er will alle bits finden. mit switch/case geht das nicht. eher sowas:
if (a & 1) { // bit 0 } if (a & 2) { // bit 1 } ... // usw.
Sehe ich irgendwas nicht? Das wären dann auch 2^32 if-Anweisungen.
-
Tachyon schrieb:
Sehe ich irgendwas nicht? Das wären dann auch 2^32 if-Anweisungen.
Nein, das sind nur 32 if-Anweisungen. Um mit switch alle möglichen Kombinationen berücksichtigen zu können, benötigt man jedoch 2^32 cases.
-
wieso weiterhin sich darüber streiten? switch ist für solche Anfragen nicht gedacht und Punkt. Da sollte die Frage schon geklärt sein, oder?
-
Tachyon schrieb:
fricky schrieb:
Tachyon schrieb:
Es ging um einzelne Bits.
ne, schau dir den code des OP mal an. er will alle bits finden. mit switch/case geht das nicht. eher sowas:
if (a & 1) { // bit 0 } if (a & 2) { // bit 1 } ... // usw.
Sehe ich irgendwas nicht? Das wären dann auch 2^32 if-Anweisungen.
nein, das ist ein & und kein ==