Forum: Compiler & IDEs Rechnen mit AVR


von Sacx (Gast)


Lesenswert?

Hallo ich habe nur kurz eine kleine, simple Frage...

Und zwar geht es darum das ich z.b.:

L12 = L1-L2

berechnen will. Nun soll das Ergebnis aber auf jeden Fall IMMER positiv 
sein, egal ob L1 oder L2 größer ist.

Gibt es das irgendeinen Befehl, der das ganze in "Betrag" setzt oder 
kann ich L12 einfach als unsigned int wählen? Damit dürften doch auch 
nur positvie Werte ausgegeben werden oder erhält man dann im Falle einer 
negativen Zahl Mist?

Desweiteren noch ne Frage:

Könnte ich eine if-Schleife so aufbauen?

if((-100<L1<100)&&(-100<L1<100))

...dann tue das!


Danke schonmal im Voraus!

Gruß Sacx

von micha (Gast)


Lesenswert?

Versuche es mal mit

L12 = abs(l1-l2)

Es gibt keine if-schleifen und die 2 Abfragebedingung ist identisch mit 
der ersten und somit überflüssig  ;-)

von horst (Gast)


Lesenswert?

A)
L12 = (L1>L2) ? L1 - L2 : L2 - L1;

B)
L12 = L1 - L2;
if (L12<0)
    L12 = -L12

C)
siehe micha

von sacx (Gast)


Lesenswert?

Okay danke ;) das mit abs scheint mir am einfachsten zu sein.

Die zweite Bedingung bei if sollte eigentlich L2 sein.
Wäre das dann grundsätzlich möglich?

von Karl H. (kbuchegg)


Lesenswert?

sacx schrieb:

> Die zweite Bedingung bei if sollte eigentlich L2 sein.
> Wäre das dann grundsätzlich möglich?

Grundsätzlich ja. ABer nicht so wie du das geschrieben hast

Ein Vergleichsoperator hat einen linken Operanden und einen rechten 
Operanden. Punkt.
Ein Operand kann nicht gleichzeitig für eine Vergleichsoperation als 
rechter Operand und für einen anderen Vergleichsoperation als rechter 
Teil fungieren.

Aber man kann natürlich die Ergebnisse von 2 Vergleichen mit zb einem 
logischen UND (&&) oder einem logischen ODER (||) miteinander verknüpfen

  if( (-100 < L2) && ( L2 < 100) )


> Versuche es mal mit

einem C-Buch.
Ganz dringend!

Denn das was du geschrieben hast

   if( -100 < L2 < 100 )

ist nämlich syntaktisch richtiges C. Das ist kein Syntaxerror und dieses 
Geschriebene hat tatsächlich auch eine Bedeutung. Aber nicht die, die du 
ihm beimisst, sondern es macht etwas ganz anderes als du vermutest.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.