if Abfragen mit AVR

Gast #1042062
Ich möchte zwei int-Werte miteinander vergleichen.
Allerdings überspringt AVR Studio die Abfrage immer.
1
int X=0x1f;
2
int Y=0x0f;
3
  
4
if (Y > X)
5
   {
6
      while(X--)
7
      {
8
         PORTA=PORTA+1;
9
      }
10
   }
11
else
12
   {
13
      while(Y--)
14
      {
15
         PORTA=PORTA+1;
16
      }
17
   }

Vll weiß ja jemand wo der Fehler liegt.
Bitte mit Code-Beispiel


PS: Ich habe schon das ganze Forum durchsucht allerding nichts 
gefunden,weswegen ich jetzt einfach poste.

Danke schonmal
Gast #1042080
kann man das irgentwie verhindern?
ich bin ja immer noch am entwickeln.
Später soll die Variablen über rs232 vorgegen werden.
Also ist die If-Schleife dann wieder notwendig.
Gast #1042398
Hallo,

Was soll eigentlich diese Zeile machen ???
1
while(Y--)

Soweit ich weiß wird innerhalb einer while-Anweisung ein Vergleich 
durchgeführt der nur WAHR oder FALSCH zurückliefert. Bei WAHR wird der 
nachfolgende Code ausgeführt, bei FALSCH wird er übersprungen.

Y-- entspricht aber Y = Y - 1 liefert somit einen Zahlenwert zurück. 
Keine Ahnung was der Compiler daraus macht! Vielleicht liegt hier ja 
dein Problem.

Aber ich lass mich gern eines besseren belehren.

Gruß
Reinhold
Persönliche Seite #1042403
die while(x--) ist schon ok... c kann ja mehrfach Anweisungen ;)

Es wird es x getestet ob es wahr ist dann um eins verringert und dann 
die schleife ausgeführt..

x ist solange wahr solange x nicht Null ist...

Die Schelife wird halt x-mal ausgeführt...
(Fast wie eine for Schleife das Ding)
Gast #1042556
@Dominik: Du muss gar nicht verhindern, dass der Compiler das 
rausoptimiert. Denn das was der Compiler daraus macht, tut im Endeffekt 
genau das, was du programmiert hast.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.