Ich verwende Codeblocks und den GNU-Compiler auf einem Windows-Computer. Wenn der Compiler läuft, tut sie dies unter den folgenden Bedingungen:Wie verwende ich größere Ganzzahlen in einem C-Programm?
mingw32-gcc.exe -Wall -g -std=c11 <filename> -o obj\Debug\main.o
Mein Code ist wie folgt:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("INTEGER min: %d\n", INT_MIN);
printf("INTEGER max: %d\n\n", INT_MAX);
printf("UNSIGNED INTEGER max: %u\n\n", UINT_MAX);
printf("LONG INTEGER min: %ld\n", LONG_MIN);
printf("LONG INTEGER max: %ld\n\n", LONG_MAX);
//printf("LONG LONG INTEGER min: %lld\n", LONG_LONG_MIN);
//printf("LONG LONG INTEGER max: %lld\n\n", LONG_LONG_MAX);
printf("UNSIGNED LONG INTEGER max: %lu\n\n", ULONG_MAX);
//printf("UNSIGNED LONG LONG INTEGER max: %lld\n", ULONG_LONG_MAX);
printf("\n");
return 0;
}
Meine Ausgabe für diesen Code:
INTEGER min: -2147483648
INTEGER max: 2147483648
UNSIGNED INTEGER max: 4294967295
LONG INTEGER min: -2147483648
LONG INTEGER max: 2147483648
UNSIGNED LONG INTEGER max: 4294967295
Die Linien unter Bezugnahme auf LONG LONG Ganzzahlen sind auskommentiert, weil der Compiler Fehler ausgegeben hat:
error: 'LONG_LONG_MIN' undeclared (first use in this function)
error: 'LONG_LONG_MAX' undeclared (first use in this function)
error: 'ULONG_LONG_MAX' undeclared (first use in this function)
CodeBlocks lieferte Code-Hinweise während der Eingabe des Codes Code, der angibt, dass ich tatsächlich die LONG_LONG-Konstanten verwenden konnte. Daher brauche ich Antworten auf die folgenden Fragen:
- Warum haben die ganzen Zahlen und lange Ganzzahlen die gleichen Grenzen? Sollten die langen Ganzzahlen nicht einen größeren Wertebereich haben?
- Warum habe ich Probleme mit den LONG_LONG Konstanten? Bedeutet das, dass ich keine langen ganzen Zahlen verwenden kann?
Dank
Mögliche doppelte Frage. Schauen Sie sich http://StackOverflow.com/questions/13590735/printf-long-long-int-in-c-with-gcc –
@JamesMcCormac: verwandt, aber definitiv eine andere Frage. –