mikrocontroller.net

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


Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: _CH_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Gruß,
Christian

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: André Kronfeldt (freakazoid)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:)

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: nischu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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^^

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.