Skocz do zawartości

Zmienna typu long long nie inkrementuje się do 8 bajtów


th3r4t3l
 Share

Polecane posty

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]

Link do komentarza
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
 Share

×
×
  • Utwórz nowe...