th3r4t3l
-
Zawartość
2 -
Rejestracja
-
Ostatnio
Posty napisane przez th3r4t3l
-
-
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]
Zmienna typu long long nie inkrementuje się do 8 bajtów
w C / C++
Napisano
Zmieniłem:
na:
i nadal nie działa
"%llx" w printf też nic nie pomaga
czego jeszcze mogę spróbować ?