int minus int

27/11/2009 - 07:40 von Thomas Koenig | Report spam
Hallo,

angenommen, ich habe

int a, b;
unsigned int res;

Wie berechne ich am besten die Differenz von a und b und weise sie res zu?

res = a - b;

geht IMHO nicht, weil ja beispielsweise a=INT_MAX und b=-INT_MAX sein könnte.

Braucht man eine Fallunterscheidung, die die alle vier Fàlle

a >= 0 && b >= 0
a >= 0 && b < 0
a < 0 && b >= 0
a < 0 && b < 0

unterschieden werden, oder geht es auch eleganter?
 

Lesen sie die antworten

#1 Thomas Richter
27/11/2009 - 09:03 | Warnen spam
Thomas Koenig schrieb:
Hallo,

angenommen, ich habe

int a, b;
unsigned int res;

Wie berechne ich am besten die Differenz von a und b und weise sie res zu?

res = a - b;

geht IMHO nicht, weil ja beispielsweise a=INT_MAX und b=-INT_MAX sein könnte.

Braucht man eine Fallunterscheidung, die die alle vier Fàlle

a >= 0 && b >= 0
a >= 0 && b < 0
a < 0 && b >= 0
a < 0 && b < 0

unterschieden werden, oder geht es auch eleganter?



Frage ist eher, was Du erwartest, dass passiert? Beispielsweise, ist
denn a >= b garantiert?

Insofern "gehen" tut das obige schon, hat aber kein vom Standard
definiertes Verhalten, falls die Subtraktion überlàuft. Das hat aber mit
der Umwandlung nach unsigned int nichts zu tun.

Grüße,
Thomas

Ähnliche fragen