-         

Ergebnis 1 bis 4 von 4

Thema: FOR-Schleife von -1 bis +1 nicht möglich?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.08.2009
    Ort
    NRW
    Beiträge
    23

    FOR-Schleife von -1 bis +1 nicht möglich?

    Anzeige

    Hi Kollegen,

    der Titel sagt ja schon fast alles. Ich habe versucht, eine FOR-Schleife von -1 bis +1 laufen zu lassen. In der Schleife wird zum Testen einfach nur die Iterationsvariable ausgegeben:

    Code:
    uint8_t i;
    for(i = -1; i <= 1; i++){
      writeString_P("Wert von i: ");
      writeInteger(i, DEC);
      writeString_P("\n");
    }
    Die Schleife wird von meinem RP6 komplett ignoriert. Wenn ich sie von 0 bis +1 laufen lasse, erhalte ich die erwarteten zwei Ausgaben.

    Ich dachte erst, ich müsste die Variable vielleicht explizit als "signed" deklarieren. Das mag der Compiler aber überhaupt nicht und bricht den Kompiliervorgang mit Fehlermeldungen ab.


    Meine Frage ist also: Kann der µC auf dem RP6 keine FOR-Schleifen von negativ nach positiv durchlaufen? Streikt er da bei euch auch? Oder kennt jemand nen Trick, mit dem es doch funktioniert?

    schönen 1. Weihnachtstag,
    V:X

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Ich dachte erst, ich müsste die Variable vielleicht explizit als "signed" deklarieren.
    Ne, brauchst du nicht. Du hast sie ja schon expliziert "unsigned" gemacht

    uint8_t steht für unsigned 8Bit-Integer, du brauchst aber ein int8_t.

    Meine Frage ist also: Kann der µC auf dem RP6 keine FOR-Schleifen von negativ nach positiv durchlaufen?
    Da kann der µC auf dem RP6 nix für!

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Du hast den Fehler selber erkannt. Eine unsigned Variable kann keine negativen Werte annehmen. Also deklarier i als signed (int8_t;
    ) Wozu brauchst du eig eine Schleife von -1 bis 1 ?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.08.2009
    Ort
    NRW
    Beiträge
    23
    Argh! Da hab ich ja mal nen richtigen "vor die Stirn klatscher" produziert.
    Ok, danke für die Antworten, mit int8_t hats natürlich funktioniert
    Naja. Jetzt werd ich wenigstens nicht mehr vergessen, wofür das u in uint8_t eigentlich steht

    @shedepe: Ich brauch das für ein Konstrukt, bei dem der Roboter vor und hinter sich und links und rechts auf Hindernisse prüfen soll.

    Guten Rutsch,
    V:X

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •