Skoro zmienna typu unsigned long long przechowuje wartości od 0 do 18446744073709551615 czyli do 0xFFFFFFFFFFFFFFFF (8 bajtów) to dlaczego zeruje się po 4 bajtach [0xFFFFFFFF] i nie liczy do 8 bajtów [0xFFFFFFFFFFFFFFFF] ???
Napisałem przykładowy kod i tak mi się własnie dzieje
#include<conio.h>
#include<stdio.h>
using namespace std;
unsigned int i=0;
unsigned long long licznik=0;
int main()
{
printf("Rozmiar typu short : %d bytes.\n",sizeof(unsigned short));
printf("Rozmiar typu int : %d bytes.\n",sizeof(unsigned int));
printf("Rozmiar typu long : %d bytes.\n",sizeof(unsigned long));
printf("Rozmiar typu long long: %d bytes.\n\n",sizeof(unsigned long long));
while(i!=2)
{
licznik++;
if(licznik%0xFFFFFFF==0)
printf("Licznik: 0x%0.16X\r",licznik);
// Wyswietl stan licznika co 0xfffffff = 268 435 455
// Wyswietlanie ciągłe mocno spowalnia program.
if(licznik==0xFFFFFFFFFFFFFFFF) // = 18446744073709551615
{
licznik=0;
i++;
}
}
}
Czy ktoś to może wytłumaczyć????
Piszę to w devcpp [TDM-GCC 4.9.2 release 32-bit]