Integrale Förderung

Wann kann eine vorzeichenbehaftete Ganzzahl nicht alle Werte des ursprünglichen Typs in Bezug auf die Ganzzahl-Heraufstufung darstellen?

Aus dem Text K & R, C Programming Language, 2. Aufl. p. 174

A.6.1 Integrale Werbung

Ein Zeichen, eine kurze Ganzzahl oder ein ganzzahliges Bitfeld, alle entweder mit oder ohne Vorzeichen, oder ein Objekt vom Aufzählungstyp können in einem Ausdruck überall dort verwendet werden, wo eine Ganzzahl verwendet werden kann.Wenn ein int alle Werte des ursprünglichen Typs darstellen kann, wird der Wert in int konvertiert. Andernfalls wird der Wert in int ohne Vorzeichen konvertiert. Dieser Prozess wird als integrale Förderung bezeichnet.

Dieser Code zeigt die Grenzen der Typen für mein System:

#include <stdio.h>
#include <limits.h>

int main(void)
{

    printf("CHAR_MAX: %i\n", CHAR_MAX);     
    printf("UCHAR_MAX: %i\n", UCHAR_MAX);

    printf("SHORT_MAX: %i\n", SHRT_MAX);        
    printf("USHORT_MAX: %i\n", USHRT_MAX);

    printf("INT_MAX: %i\n", INT_MAX);       
    printf("UINT_MAX: %u\n", UINT_MAX);

    return 0;
}

Das Ergebnis ist:

CHAR_MAX: 127
UCHAR_MAX: 255
SHORT_MAX: 32767
USHORT_MAX: 65535
INT_MAX: 2147483647
UINT_MAX: 4294967295

Der vorzeichenbehaftete int-Typ ist viel größer als jeder andere Typ. Wann würde er also jemals auf UINT_MAX zurückgreifen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage