PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Schnelle Überprüfung des Betrags einer Zahl?



Boron
15-11-2005, 09:04
Hallo zusammen,

wie kann man denn ganz fix überprüfen, ob der Betrag einer Zahl größer oder kleiner einem bestimmten Wert ist?
int a, b;
int differenz;
...
differenz = a - b;
/* wenn Betrag von differenz < als 5 */
if( |differenz| < 5 )
{ doSomething(); }Gibt es was besseres als:
if( differenz<5 && differenz>-5 )

Boron
15-11-2005, 09:20
Hat sich erledigt.
if( differenz < 0 ) {
differenz = -differenz;
}Und schon haben wir den Betrag.
Der Compiler macht da verdammt wenig Assembleranweisungen daraus. also schnell genug.

(Erst denken, dann im forum fragen :o)

Joghurt
15-11-2005, 14:28
if (fabs(zahl)<5.0) // für fließkomma
if (abs(zahl)<5) // für integer

Boron
15-11-2005, 14:43
Oha, gibt es also doch schon :).

Nur hier bei uns im Embedded Bereich gibt es keine Bibliotheksfunktionen.
Trotzdem Danke.

Joghurt
15-11-2005, 14:51
Nun, fabs und abs sollte bei -O2 eigentlich in die entsprechenden Prozessoropcodes übersetzt werden, so die CPU denn einen internen abs-Befehl hat.