Kann ein einfaches Zeichen möglicherweise Trap-Werte haben?
Liesmich
A "Trap-Wert", oder"Falle Darstellung" für TypT
ist eine Bitkombination (des zugrunde liegenden Speichers), die einen ungültigen Wert von ergibtT.
Der Versuch, die Darstellung eines ungültigen Werts zu interpretieren, führt zuundefiniertes Verhalten.
Ein weitererFrage hat eine hitzige Diskussion überchar
, und die Möglichkeit einer Implementierung mitFalle Darstellungen dafür.
Frage:
Kannchar
Möglicherweise haben Trap-Werte?Zitate, die in der vorherigen Diskussion erwähnt wurden:Diese Abschnitte wurden in der vorangegangenen Argumentation am häufigsten zitiert. Widersprechen sie sich?
3.9.1p1
Grundtypen [basic.fundamental]
Es ist implementierungsspezifisch, ob achar
kann negative Werte enthalten. Zeichen können explizit deklariert werdensigned
oderunsigned
.
A char,
a signed char,
und einunsigned char
den gleichen Speicherplatz belegen und die gleichen Ausrichtungsanforderungen haben (3.11); das heißt, sie haben die gleiche Objektdarstellung. Bei Zeichentypen sind alle Bits der Objektdarstellung an der Wertdarstellung beteiligt.
Bei vorzeichenlosen Zeichentypen stehen alle möglichen Bitmuster der Wertedarstellung für Zahlen. Diese Anforderungen gelten nicht für andere Typen.
In einer bestimmten Implementierung eine Ebenechar
object kann die gleichen Werte annehmen wie asigned char
oder einunsigned char;
welches ist implementierungsdefiniert.
3,9p2Typen [basic.types]
Für jedes Objekt (außer einem Basisklassen-Unterobjekt) von trivial kopierbarem TypT,
Gibt an, ob das Objekt einen gültigen Wert vom Typ enthältT
können die zugrunde liegenden Bytes (1.7), aus denen das Objekt besteht, in ein Array von kopiert werdenchar
oderunsigned char.
Wenn der Inhalt des Arrays vonchar
oderunsigned char
zurück in das Objekt kopiert wird, behält das Objekt anschließend seinen ursprünglichen Wert.