Forum: Compiler & IDEs if(x>0) funktioniert nicht


von Karl (Gast)


Lesenswert?

Hallo!

In einem Programm möchte ich eine variable int16_t x testen, ob sie 
grösser oder kleiner als null ist if(x>0) funktioniert aber nicht, wenn 
ich eine zeile oberhalb der if()-Anweisung x=-1; setze, dann führt er 
den Code innerhalb der if-dings trotzdem aus.
An was könnte das liegen? Ich verwende WinAVR, eine halbwegs aktuelle 
Version.
Wer kann mir einen Tipp geben?

von Oliver (Gast)


Lesenswert?

Da machst du halt was verkehrt.

Das Programm hier als Anhang, genauso, wie es nicht funktioniert, wäre 
schon hilfreich. Sonst kann das doch keiner beantworten.

Oliver

von _CH_ (Gast)


Lesenswert?

Hallo,

dein "int16_t" ist schon als signed definiert oder? Sonst macht eine 
Abfrage größer 0 keinen Sinn.

Gruß,
Christian

von Karl (Gast)


Lesenswert?

Hallo!

Also am Programm wird es wohl nicht liegen, habe ein ganz einfaches nur 
zum test gemacht, indem vor der If-Verzweigung ein x=-1; stand, also an 
dem wirds nicht liegen.
@_CH_: Ich denke, dass int16_t schon vorzeichenbehaftet ist, im 
Gegensatz zu uint16_t... Oder liege ich da falsch?

von André K. (freakazoid)


Lesenswert?

Poste den Code. Es liegt definitiv am Programm. Sollte x>y nicht 
funktionieren, wäre die Welt so wie ich sie kenne nicht machbar ;-)

von Karl H. (kbuchegg)


Lesenswert?

> Also am Programm wird es wohl nicht liegen,

Das glauben sie immer.
Es liegt praktisch immer am Programm. Nicht böse sein,
aber dass du einen Compilerfehler findest ist mehr
als unwahrscheinlich. Es wäre zwar theoretisch denkbar
aber praktisch friert wohl eher die Hölle ein :-)

von Stefan (Gast)


Lesenswert?

Mit Code wäre die Lösung gestern um 21:21 Uhr bekannt gewesen. Ohne Code 
ist sie heute um 10:43 Uhr noch nicht bekannt. Chaqun à son goût

von Karl (Gast)


Lesenswert?

Hallo!

Wenn es nach meinem goût geht können wir gerne bei Deutsch bleiben.
Ich wollte eigentlich nur eure Glaskugeln testen nud sie scheinen zu 
funktionieren.
Ich habe vor dem eigentlichen Test auf grösser 0 die Variable in eine 
andere vom Typ int16_t gepackt. Deshalb --> logischerweise nicht 
richtig.
Darauf hatte ich nicht geachtet, ich hätte eine Warnung erwartet....
Also, passt auf eure Glaskugeln auf, sie funktionieren wirklich.
Danke für die Hilfe:)

von Werner B. (Gast)


Lesenswert?

> ...ich hätte eine Warnung erwartet....

Das ist der Sinn des Cast. Die Warnung zu unterdrücken wenn man Äpfel zu 
Birnen legen will.

von nischu (Gast)


Lesenswert?

Aber wollte der Poster größer / kleiner als 0 haben?
> 0 ist doch größer als Null^^
!= 0 wäre dann größer / kleiner Null^^

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.