www.mikrocontroller.net

Forum: Compiler & IDEs Wertebereich unterschreiten


Autor: GCC Nutzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

gibt es irgend eine Vorgabe, was passiert, wenn man auf eine uint8_t 
Variable, welche den Inhalt 0x00 hat den decrement Operator anwendet? 
Oder ist das verhalten unbestimmt?

Gruß

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Definiert 255.

Autor: Jasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Definiert 255.

Aber Vorsicht!

Fuer signed-Typen ist das Verhalten bei Overflow schon nicht mehr 
definiert...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jasch schrieb:

> Fuer signed-Typen ist das Verhalten bei Overflow schon nicht mehr
> definiert...

Richtig.  Auch bei "unsigned char" ist es nicht wirklich sicher,
da könnte bspw. auch 0xffffffff rauskommen (wenn char nämlich 32
bit breit ist).  Aber bei "uint8_t" ist es sicher.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Jasch schrieb:
>
>> Fuer signed-Typen ist das Verhalten bei Overflow schon nicht mehr
>> definiert...
>
> Richtig.  Auch bei "unsigned char" ist es nicht wirklich sicher,
> da könnte bspw. auch 0xffffffff rauskommen (wenn char nämlich 32
> bit breit ist).

Mir ist jetzt keine GCC-Zielarchitektur bekannt, bei der das so wäre.

> Aber bei "uint8_t" ist es sicher.

Wenn es einen uint8_t gibt, dann ist es auch für unsigned char sicher 
;-)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:

> Mir ist jetzt keine GCC-Zielarchitektur bekannt, bei der das so wäre.

Ich kenne derartige Architekturen auch nur vom Hörensagen und weiß
nicht, ob's dafür dann einen GCC-Port gibt.  Allerdings fällt in den
GCC-Quellen und -Tests auf, dass an vielen Stellen _CHAR_BIT_
explizit gefragt wird statt einfach anzunehmen, es hätte konstant den
Wert 8.  Das legt zumindest den Schluss nahe, dass schonmal jemand
den Versuch unternommen hat, GCC auf derartige Architekturen zu
portieren.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:

> Mir ist jetzt keine GCC-Zielarchitektur bekannt, bei der das so wäre.

Ich hatte mal mit einer Architektur zu tun, die keine 16-Bit Datentypen 
unterstützte. Da war logischerweise short=int=32bit.

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.