Az integer számokat a C 4 byte-on tárolja. 4 byte = 32 bit. Ezzel a 32 bittel összesen 232 = 4'294'967'296 darab szám írható le azonban nem ez a maximális felvehető érték, mivel a negatív számokra is gondolni kell. Ez a tartomány elfeleződik, egyik fele a számegyenes bal oldalára, a negatív számokhoz kerül.
Ha határátlépést követünk el, akkor semmi jóra nem számíthatunk. Az fog történni, hogy a számegyenesen "átfordulunk" és a másik végéről kezdjük a számolást. Például, ha 2'147'483'647 felső határt 3-mal átlépjük, szóval egy változóba 2'147'483'650-et préselünk, akkor a számegyenes negatív végén kötünk ki, és itt 3-at lépünk:
#include<stdio.h>
int main()
{
int x = 2147483650;
printf("%d", x);
return 0;
}
limit.c c -2147483646
A double számokat a C 8 byte-on tárolja – normál alakban. A normál alak egy 1 és 2 közötti törtszám szorozva 10 valahányadik hatványával. A normál alak két részből áll:
-
mantissza: a törtrész
-
karakterisztika: hányadik hatványon van a 10
Ezt a két adatot tárolja le a C, a mantisszát 6 byte-on, a karakterisztikát 2 byte-on. Így a limitek egészen nagy számok.