Größer als Unsigned Long Long int?



  • Kann ich größere Zahlen als unsigned long long int angeben?





  • Danke



  • Der C Standard schreibt hierfür Mindestwerte vor (und keine (Bit)Größen):

    #define    UCHAR_MAX                            255
                #define    USHRT_MAX                          65535
                #define    UINT_MAX                           65535
                #define    ULONG_MAX                     4294967295
                #define    ULLONG_MAX          18446744073709551615
    

    Daraus folgen IMPLIZIT die Mindest(Bit)Größen für die unsigned Typen (bei 1 Byte == 8 Bit):

    unsigned char >= 8 Bit
    unsigned short >= 16 Bit
    unsigned int >= 16 Bit
    unsigned long >= 32 Bit
    unsigned long long >= 64 Bit
    

    long long gibt es erst ab C99, auch uintmax_t ist hier definiert (und sollte von einem entsprechend konformen Compiler dann auf unsigned long long gemappt werden).

    gcc+clang haben abweichend vom Standard den Typ __int128 bzw. unsigned __int128. Hierfür sind aber nur Operatoren definiert und keine Funktionen (printf...).



  • Wutz schrieb:

    gcc+clang haben abweichend vom Standard den Typ __int128 bzw. unsigned __int128. Hierfür sind aber nur Operatoren definiert und keine Funktionen (printf...).

    Wieso abweichend vom Standard? Es wird im Standard explizit erwähnt, dass Implementierungen sogenannte extended integer types anbieten können. Wenn es nun einen extended integer mit höherer precision als long long gibt, muss intmax_t auf diesen Typen abbilden.



  • Vielen dank an alle!

    Julius


Anmelden zum Antworten