Forum: Compiler & IDEs Zahlenbereich wählen


von Unitled (Gast)


Lesenswert?

Hallo,
der GCC kompiliert zwar, aber der Vergleich funktioniert leider nicht:
1
if (0 < Messwert > 210)


Wie kann ich auf geschicktere Weise einen Zahlenbereich wählen?


mfg unitled

von ... (Gast)


Lesenswert?

C-Buch besorgen
C-Buch lesen
C-Buch verstehen

von Oliver (Gast)


Lesenswert?

"geschickter" :
1
if ((0 < Messwert) && (Messwert > 210))

Oliver

von Unitled (Gast)


Lesenswert?

vielleicht eine idee, aber ich weiß immerhin warum der vergleich nicht 
funktioniert:

als erste vergleicht der compiler links und mitte und dann mitte und 
rechts und somit ist der Vergleich immer falsch.

von Unitled (Gast)


Lesenswert?

danke oliver

von Uwe .. (uwegw)


Lesenswert?

Wieso achtet heutzutage eigentlich niemand mehr auf die 
Compiler-Warnungen?
> test.c:47: warning: comparisons like X<=Y<=Z do not have their mathematical
> meaning

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Wenn ein Wert größer als 210 ist, muss er auch größer als 0 sein.

von Unitled (Gast)


Lesenswert?

ne uwe deswegen habe ich ja gerade gefragt^^

von Karl H. (kbuchegg)


Lesenswert?

Unitled schrieb:

> als erste vergleicht der compiler links und mitte und dann mitte und
> rechts und somit ist der Vergleich immer falsch.

genau das passiert nicht.

In C ist fast alles ein Ausdruck. Auch das Ergebnis eines Vergleichs 
oder einer Zuweisung.

In

if (0 < Messwert > 210)

wird 0 und Messwert miteinander verlgichen. Das liefert ein Ergebnis, 
nämlich 0 oder 1, je nachdem ob der Vergleich zutrifft oder nicht.
Dieses Ergebnis geht dann in den zweiten Vergleich: > 210
Da weder 0 noch 1 jemals größer als 210 sein wird, ist damit der 
komplette Ausdruck immer falsch.

Wenn man deinen Vergleich etwas ausführlicher auseinandernimmt, dann 
hast du da oben geschrieben:

  Vergleich1 = ( 0 < Messwert );
  Vergleich2 = ( Vergleich1 > 210 );
  if( Vergleich2 )

Was du wissen willst:
Ist es wahr, dass Messwert größer 0 ist UND Messwert kleiner als 210 ist

  if( Messwert > 0  && Messwert < 210 )

von Unitled (Gast)


Lesenswert?

@kbuchegg
Danke dir, ich sollte mir mal ne Liste mit logischen Verknüpfungen 
machen.

mfg Unitled

von Oliver (Gast)


Lesenswert?

>ich sollte mir mal ne Liste mit logischen Verknüpfungen
>machen.

>C-Buch besorgen
>C-Buch lesen
>C-Buch verstehen

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Unitled schrieb:
> @kbuchegg
> Danke dir, ich sollte mir mal ne Liste mit logischen Verknüpfungen
> machen.

Wozu?
Es gibt nur 2: UND und ODER

von Peter S. (psavr)


Lesenswert?

>Wozu?
>Es gibt nur 2: UND und ODER

Falsch, es gibt auch noch XOR!

von Karl H. (kbuchegg)


Lesenswert?

Peter S. schrieb:
>>Wozu?
>>Es gibt nur 2: UND und ODER
>
> Falsch, es gibt auch noch XOR!

Aber nicht als dezidierte logische Verknüfung.

von Klaus W. (mfgkw)


Lesenswert?

doch: !=
(falls links und rechts logische Ausdrücke stehen, die jeweils nur 0 
oder 1 liefern)

von Gast (Gast)


Lesenswert?

Was Karl heinz Buchegger wohl meinte ist, dass es zwei elemtare logische 
Verknuepfungen gibt, naemlich : UND, ODER

Mit Hilfe dieser und der Negation kann man nun alle anderen logischen 
Verknuepfungen darstellen. Dass es fuer einige gebraeuchliche 
(nichtelementare) auch noch extra Abkuerzungen (z. Bsp. XOR) aendert 
dabei nichts an der grundsaetzlichen Aussage. ;)

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.