Wird unsigniertes Zeichen immer zu int befördert?

Angenommen, das Folgende:

unsigned char foo = 3;
unsigned char bar = 5;

unsigned int shmoo = foo + bar;

Sindfoo undbar Werte, die garantiert gefördert werdenint Werte für die Auswertung des Ausdrucksfoo + bar - oder dürfen Implementierungen diese fördern?unsigned int?

ImAbschnitt 6.2.5 Absatz 8:

Für zwei beliebige Integer-Typen mit derselben Vorzeichenfolge und unterschiedlichem Integer-Umwandlungsrang (siehe 6.3.1.1) ist der Wertebereich des Typs mit kleinerem Integer-Umwandlungsrang ein Unterbereich der Werte des anderen Typs.

ImAbschnitt 6.2.5 Absatz 9:

Wenn einint können alle Werte des ursprünglichen Typs darstellen, der Wert wird in einen umgewandeltint; Andernfalls wird es in ein konvertiertunsigned int.

Die Garantie, dass ein Integer-Typ mit kleinerem Integer-Umwandlungsrang einen Wertebereich aufweist, der ein Teilbereich der Werte des anderen Typs ist, scheint abhängig vonUnterschrift vom Integer-Typ.

signed char entsprichtsigned intunsigned char entsprichtunsigned int

Bedeutet dies, dass der Wert vonunsigned char ist nur garantiert im Unterbereich vonunsigned int und nicht unbedingtint? Wenn ja, bedeutet dies, dass eine Implementierung theoretisch eineunsigned char Wert, der nicht im Unterbereich einesint?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage