Dennis schrieb:
> Das Ergebnis dieser Rechnung ist var1 = 0xFFFF.
Völlig korrekt.
> Sollte es nicht aber 0 sein?
Wie kommst du denn darauf? Wenn ich von irgendeiner Ganzzahl eins
abziehe, muss das Ergebnis verschieden von der ursprünglichen Ganzzahl
sein.
Es sei denn, man benutzt Sättigungs-Arithmetik. Dafür hat C allerdings
keine Operatoren und man kann sie in C auch nichtmal nachrüsten...
In C++ hingegen ginge das. (Das Nachrüsten entsprechender Operatoren für
ebenfalls noch zu schaffende "gesättigte" Datentypen). Umsetzen müßte
man den Kram (wenn er denn effizient sein soll) aber letztlich doch in
der einzig wahren Sprache: Assembler...
Und das natürlich so, wie es sich gehört und wie es in Wahrheit auch
fast immer ist: für jede Zielarchitektur anders. Echte Portibilität gibt
es nicht, und das bissel, was es gibt, resultiert nur aus den
Fähigkeiten der Compilerbauer (genauer: derjenigen, die die
Codegeneratoren beisteuern) und der Tatsache, daß wenigstens diese Leute
neben C/C++/weiss der Fuchs welche abgehobene Sprache auch Assembler
beherrschen...
Asm rules...