Jump to content

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


th3r4t3l

Recommended Posts

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 to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...