PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ULONG_MAX Wertbereich?



undefined
03-10-2007, 08:54
Ich arbeite mich gerade durch c und habe ein testscript zum lesen der Datentypen geschrieben. Jedoch gibt mir ULONG_MAX ein -1 zurück.
Was mach ich hier falsch?


{ULONG_MAX}
Maximum value of type unsigned long.
Minimum Acceptable Value: 4 294 967 295



/* long_limit.c */
#include <stdio.h>
#include <limits.h>
int main(void) {
printf("long-Wert mindestens : %ld\n", LONG_MIN);
printf("long-Wert maximal : %ld\n", LONG_MAX);
printf("unsigned long max. : %ld\n", ULONG_MAX);
printf("long benötigt %d Byte (%d Bit) Speicher\n", sizeof(long), sizeof(long) * CHAR_BIT);
return 0;
}



./long_limit
long-Wert mindestens : -2147483648
long-Wert maximal : 2147483647
unsigned long max. : -1
long benötigt 4 Byte (32 Bit) Speicher

Yonibear
03-10-2007, 10:01
Das Problem ist dass %ld die Daten wieder als signed long interpretiert. Unsigned-Werte kann man mit u ausgeben, also hier mit %lu.

undefined
03-10-2007, 10:28
Danke jetzt bekomme ich eine korrekte Ausgabe.


#include <stdio.h>
#include <limits.h>
int main(void) {
printf("long-Wert mindestens : %ld\n", LONG_MIN);
printf("long-Wert maximal : %ld\n", LONG_MAX);
printf("unsigned long max. : %lu\n", ULONG_MAX);
printf("long benötigt %d Byte (%d Bit) Speicher\n", sizeof(long), sizeof(long) * CHAR_BIT);
return 0;
}



./long_limit
long-Wert mindestens : -2147483648
long-Wert maximal : 2147483647
unsigned long max. : 4294967295
long benötigt 4 Byte (32 Bit) Speicher