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