005
10.10.2003, 15:02 Uhr
ao
(Operator)
|
Zitat: |
Bruder Leif postete Oder bitwise and:
C++: |
if(i&1) cout << "ungerade"; else cout << "gerade";
|
|
Da wird (das hatten wir neulich schon mal) eine Operation durch eine andere, vermeintlich äquivalente, ersetzt, die nicht die Zahlenwerte der Variablen interpretiert, sondern Annahmen über die interne binäre Darstellung macht.
Ich hab mir bisher nie Gedanken drum gemacht, aber jetzt fällts mir auf: Ist es wirklich vom C-Standard garantiert, dass das immer (d.h. mit allen Compilern und auf allen Prozessoren) geht?
Was ist, wenn ich einen Prozessor habe, der alle Zahlen komplementär darstellt? Auf dieser Maschine wäre die Gerade-Ungerade-Regel genau umgekehrt.
Oder sagt der C-Standard irgendwo, dass das nicht sein darf und dass die C-Runtime-Lib für dieses System das gefälligst wieder umzukehren hat?
Weiß das jemand?
ao |