Advanced Java Services | Datentypen |
Typ | Erklärung | Typ | Erklärung |
---|---|---|---|
char | kleinste adressierbare Einheit des Rechners, die den ASCII-Zeichensatz enthält. char ist ein Ganzzahltyp. Die Vorzeichenbehaftung ist abhängig von der Implementierung. | signed char | wie char, aber sicher signed. |
unsigned char | wie char, aber sicher unsigned. | ||
short short int signed short signed short int |
short signed Ganzzahltyp. Mindestens 16 bit breit. | unsigned short unsigned short int |
wie short, aber unsigned. |
int signed int |
basic signed integer type. Mindestens 16 bit breit. | unsigned unsigned int |
wie int, aber unsigned. |
long long int signed long signed long int |
long signed integer type. Mindestens 32 bit breit. | unsigned long unsigned long int |
wie long, aber unsigned. |
long long long long int signed long long signed long long int |
long long signed integer type. Mindestens 64 bit breit. Spezifiziert im C99 Standard. | unsigned long long unsigned long long int |
wie long long, aber unsigned. Spezifiziert im C99 Standard. |
float | (single precision) floating-point Typ. Nicht exakt spezifiziert. Auf den meisten Systemen jedoch implementiert als IEEE 754 single precision floating point format. |
||
double | double precision floating-point type. Actual properties unspecified, however on most systems this is IEEE 754 double precision floating point format. |
||
long double | extended precision floating-point type. Actual properties unspecified. On most systems this is equivalent either to double, 80-bit floating point format, or IEEE 754 quadruple precision floating-point format. |
MinGW : Compilerflag "-std=c99" notwendig !
Größte darstellbare Ganzzahl: 2^63 - 1 = 9223372036854775807.
Kleinste darstellbare Ganzzahl: -2^64 = -9223372036854775808.
Ausgabe mit printf().
long long signedLongLong = 9223372036854775807; // das Maximum printf("signedLongLong = %I64d\n", signedLongLong); // 9223372036854775807 printf("signedLongLong = %I64d\n", ++signedLongLong); // - 9223372036854775808
Einlesen mit scanf().
// Einlesen von long long mit scanf long long veryLong; printf("Ganzzahl (MAX = 9223372036854775807) eingeben: "); ret = scanf("%I64d", &veryLong); (ret == 1) ? printf("Eingegebene Zahl = %I64d\n", veryLong) : printf("falsche Eingabe\n"); // Ausgabe im Hexformat (ret == 1) ? printf("Hexdarstellung = %I64x\n", veryLong) : printf("falsche Eingabe\n"); // 9223372036854775807 wurde korrekt eingelesen und hex ausgegeben: 7fffffffffffffff
Größte darstellbare Ganzzahl: 2^64 - 1 = 18446744073709551615.
Kleinste darstellbare Ganzzahl: 0.
Ausgabe mit printf().
unsigned long long uuLong = 18446744073709551615; printf("uuLong = %I64u\n", uuLong); // 18446744073709551615 printf("uuLong = %I64u\n", ++uuLong); // 0
Einlesen mit scanf().
unsigned long long uVeryLong; printf("Ganzzahl (MAX = 18446744073709551615) eingeben: "); ret = scanf("%I64u", &uVeryLong); (ret == 1) ? printf("Die Zahl = %I64u\n", uVeryLong) : printf("falsche Eingabe\n"); (ret == 1) ? printf("Die Zahl = %I64x\n", uVeryLong) : printf("falsche Eingabe\n"); // Hexausgabe: ffffffffffffffff
Ausgabe mit printf().
// On most systems this is equivalent either to double, 80-bit floating point format, or IEEE 754 quadruple precision floating-point format. // 3.141592653589793238462643383279502884197169399375105820974944592307816406286 208998628034825342117067982 long double pi = 3.14159265358979323846264; printf("sizeof(long double) = %d\n", sizeof(long double)); // 12 byte printf("long double value = %.20Lf\n", ld); // Ausgabe : // 3.14159265358979323851
Einlesen mit scanf() geht nicht. Aber String einlesen mit fgets() und anschließende Umwandlung in long double mit strtold() aus stdlib.h möglich (Hier nur der zweite Teil).
char *pist = "3.141592653589793238462643383279502884197", *endptr; // 19 stellen gehen long double pi = strtold(pist, &endptr); printf("pi = %.20Lf\n", pi); // 3.14159265358979323851 printf("diff = %d\n", endptr - pist); // 41, also ganzen string gelesen
Bei der Ausgabe kann statt %Lf auch %lf, aber nicht %f genommen werden.