Variablen vertauschen - ich verzweifle

OP #3252591
Ich bin im Moment am schreiben einer simplen "Grafikkarte", welche eine 
16x16 RGB LED Matrix ansteuert. Die Ansteuerung selbst geht, also fange 
ich jetzt mit den Grafikfunktionen (Linie, Viereck etc.) an. Da ich die 
Linienfunktion so einfach bedienbar wie möglich halten wollte, sollte 
die Reihenfolge der Koordinaten egal sein. Also fragt meine Funktion 
einfach ab welche Zahl grösser ist, und dreht sie bei bedarf.
Das habe ich so gelöst:
1
  int x1 = 0; 
2
  int x2 = 0;
3
  int y1 = 3;
4
  int y2 = 7;
5

6
    if (y2 >> y1)
7
    {
8
      int temp = y1;    // das hier vertauscht y1 und y2, falls y2 grösser ist.
9
      y1 = y2;
10
      y2 = temp;
11
    }
12
    if (y1 == 7 && y2 == 3)   
13
    {
14
      pixel(30,30,0,7,7); // ausgabe auf display
15
    }

eigentlich sollte die Abfrage "if (y1 == 7 && y2 == 3)" wahr sein, egal 
ob
y1 = 3; und y2 = 7;
oder ob
y1 = 7; und y2 = 3;
da es im ersten fall ja vertauscht wird. Bei mir funktioniert das 
vertauschen aber komischerweise nur, wenn y1 kleiner 3 ist. Das heisst 
so wie oben, wird das pixel(30,30,0,7,7); nie erreicht, wenn ich aber 
alle 3`s durch 2, 1 oder 0 ersetze (so:)

1
  int x1 = 0; 
2
  int x2 = 0;
3
  int y1 = 2;
4
  int y2 = 7;
5

6
    if (y2 >> y1)
7
    {
8
      int temp = y1;    // das hier vertauscht y1 und y2, falls y2 grösser ist.
9
      y1 = y2;
10
      y2 = temp;
11
    }
12
    if (y1 == 7 && y2 == 2)   
13
    {
14
      pixel(30,30,0,7,7); // ausgabe auf display
15
    }

dann geht es!
Ich weiss echt nicht mehr weiter, ich hoffe mal es war ein einfacher 
Fehler, und jemand kann mir sagen, warum dass nicht geht.
LG, Sean
OP #3252606
Hallelujah, danke, danke, danke! Das erklärt so einiges, denn seit ich 
programmiere (> 5 Jahre), habe ich IMMER >> und << verwendet! zum Glück 
habe ich dann meistens >= und <= genommen, was das Problem natürlich 
löste... Aber da waren immer wieder diese Programme, die mit x >> 4 
nicht funktionieren wollten, und mit x >= 5 schon...
Zum Glück hab ich gefragt, sonst hätt ich noch jahrelang solchen Mist 
zusammengetippt :(
LG, Sean
#3252621
Sean Goff schrieb:
> Hallelujah, danke, danke, danke! Das erklärt so einiges, denn seit ich
> programmiere (> 5 Jahre), habe ich IMMER >> und << verwendet!

Das dürfte dann wohl der hartnäckigste Fall sein, dem ich jeh dringenst 
nahegelegt habe, sich doch bitte mal ein C-Buch zu kaufen und es 
durchzuarbeiten. Ich will gar nicht drann denken, was du in mehr als 5 
Jahren noch für einen Bockmist dir zusammengereimt hast, wenn es schon 
an banalen Vergleichen scheitert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 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.