Ist der Typ unsigned short + int implementation-defined?

8

Gegeben diesen Code,

%Vor%

ist der Typ von sum implementation-defined? Mein Lesen des C ++ 11 Standards sagt ja:

  • 5.7 / 1 besagt, dass die üblichen arithmetischen Konvertierungen angewendet werden.
  • 4.13 / 1 Die Punkte 2 und 3 sagen, dass der Rang von int größer ist als der Rang von unsigned short.
  • 5/9 bullet 5 subbullet 4 besagt, dass, wenn int alle Werte in unsigned short darstellen kann, die vorzeichenlose Abkürzung in int konvertiert wird und der Typ von sum int ist.
  • 5/9 bullet 5 subbullet 5 besagt, dass, wenn int nicht alle Werte in unsigned short darstellen kann, beide Operanden in unsigned int konvertiert werden und der Typ von sum unsigned int.
  • ist

Wenn die obige Analyse legitim ist, bedeutet dies, dass die Verwendung von auto zum Deklarieren von Variablen, die mit arithmetischen Ausdrücken für integrierte Typen initialisiert wurden, zu implementierungsdefinierten Ergebnissen führen kann. Ich nehme an, es würde viele Programmierer überraschen, dass der Typ von sum oben nicht vollständig vom Standard bestimmt wird.

Ist meine Argumentation legitim?

    
KnowItAllWannabe 26.05.2013, 22:48
quelle

1 Antwort

0

Der Typ ist implementierungsspezifisch, aber nicht implementierungsdefiniert. Implementierungsdefiniert bedeutet, dass die Implementierung dokumentieren muss, was sie tut.

    
Pete Becker 27.05.2013, 20:02
quelle

Tags und Links