PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : if-anweisung in kurz form



derheini
07-07-2006, 20:11
Hiho,

habe vor kurzem in einem C quelltext etwas änliches wie dieses gesehen:

a=((-foo)&b | (~-foo)&c);

das ganze macht das selbe wie:

if(foo) {
a=b;
} else {
a=c;
}


jetzt meine frage, und zwar wofür sind die "-" vor den foo's und kann man statt einem boolschen wert auch andere were prüfen.

mfg ICH

Meillo
07-07-2006, 20:39
krass :eek:

ich kenn' halt
a == b ? bla() : blubb();

anda_skoa
08-07-2006, 11:33
Das absolut krank!

Wenn schon kurz dann die bedingte Zuweisung wie Meillo geschrieben hat.

Der andere Code beruht auf Annahmen interner Repräsentationen und bestimmer Werte von foo

Beispiel:
foo = 1 // also TRUE

d.h.
-foo = -1, in 2er Komplement, 0xFFFF
0xFFFF & b => b
~0xFFFF => 0x0 (Invertierung)
0x0 & c => 0x0
b | 0x0 => b

Ciao,
_