int zu unsigned für Vergleichsoptimierun=?ISO-8859-15?Q?g_definiert??=

01/04/2009 - 09:57 von Heinz Saathoff | Report spam
Moin,

ich habe mich gefragt, ob man einen auf kleiner 0 zu testen,
diesen int zu unsigned int casten kann, woraufhin der unsigned
Wert dann > INT_MAX wàre.

Ich denke da an sowas:
Dieser Code mit 2 Vergleichen
int x;
//...
if( x>=0 && x<arr_size ) arr[x] = f();

optimieren zu diesem Code mit nur einem Vergleich
int x;
//...
if( (unsigned int)x < arr_size ) arr[x] = f();

Es funktioniert bei mir zwar, aber ich weiss nicht, ob's definiertes
Verhalten ist.


- Heinz
 

Lesen sie die antworten

#1 Claus Reibenstein
01/04/2009 - 11:12 | Warnen spam
Heinz Saathoff schrieb:

Ich denke da an sowas:
Dieser Code mit 2 Vergleichen
int x;
//...
if( x>=0 && x<arr_size ) arr[x] = f();



Hier sieht man sofort, was gemeint ist.

optimieren zu diesem Code mit nur einem Vergleich
int x;
//...
if( (unsigned int)x < arr_size ) arr[x] = f();



Hier sieht man es schon nicht mehr sofort.

Was daran optimiert sein soll, ist mir schleierhaft.

Es funktioniert bei mir zwar, aber ich weiss nicht, ob's definiertes
Verhalten ist.



Es ist undefiniert, da der Cast von negativen Werten nach unsigned
nirgends festgelegt ist.

Gruß. Claus

Ähnliche fragen