mikrocontroller.net

Forum: Compiler & IDEs Entscheidungsoperationen in AVR GCC


Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich möchte zwei Variablen unter AVR GCC vergleichen und zwar mit einem 
Casting:
int8_t a = 0x81;  // 10000001b
uint8_t b = 0x80;  // 10000000b

Was bekomme ich beim Vergleich "
(int8_t)b < a
"?

Wenn das Casting funktioniert, ergibt sich "-128 < -127", also "true";
Sonst "128 < -127", also "false". Wo finde ich solche Regeln?

Gruss
Senmeis

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst Du Dich etwas klarer ausdruecken? Welche "Regeln" meinst Du? 
Meinst Du Grammatikregeln oder eine semantische Beschreibung?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Owen, schau mal in den ANSI C Standard rein. Das ist die 
Sprachbeschreibung von C an die sich die Compilerbauer halten sollen.

Und schau dort dort speziell den Punkt integer promotions nach und ob 
der bei dem if-Statement von der Sprache C her durch den AVR GCC ohne 
dein Zutun gemacht werden muss oder nicht.

Auf die Schnelle kann ich dir einen Link auf eine Draft-Version des ANSI 
C Standards geben: 
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

Ich habe nicht geprüft, ob das dem aktuell gültigen Standard entspricht.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten castest du beide Werte auf den gleichen Typ,
dann ist auch klar was beim Vergleich passiert.

Jürgen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Owen Senmeis wrote:
> Wenn das Casting funktioniert, ergibt sich "-128 < -127", also "true";

Also mit Casting (DSDS) hat das nicht zu tun.

Das Casten funktioniert aber, denn dazu ist es ja da.


Peter

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das gleiche Verb in unterschiedlicher Zeitform.

Autor: tata (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und schau dort dort speziell den Punkt integer promotions nach und ob
> der bei dem if-Statement von der Sprache C her durch den AVR GCC ohne
> dein Zutun gemacht werden muss oder nicht.
>
Boardsuche reicht hier:
http://www.mikrocontroller.net/attachment/37776/constant.jpg
aus
Beitrag "C-codezeile interpretieren"

Frohes (Rest-)Fest ;-)

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.