Advanced   Java   Services Datentypen Back Next Up Home


Basisdatentypen
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.


Arbeiten mit c99-Datentypen

MinGW : Compilerflag "-std=c99" notwendig !





Ausgeben und Einlesen von long long

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

Ausgeben und Einlesen von unsigned long long

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

Ausgeben und Einlesen von long double

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.

Valid XHTML 1.0 Strict top Back Next Up Home