th3r4t3l Napisano Sierpień 20, 2020 Zgłoś Share Napisano Sierpień 20, 2020 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 More sharing options...
Kaczus Napisano Sierpień 21, 2020 Zgłoś Share Napisano Sierpień 21, 2020 Typ long long nie gwarantuje ci odpowiedniej długości tylko tyle, że sizeof(unsigned long) <= sizeo(unsigned long long) Chcesz bitowości odpowiedniej, używaj typów uintxx_t, w tym wypadku uint64_t Link do komentarza Udostępnij na innych stronach More sharing options...
th3r4t3l Napisano Sierpień 21, 2020 Autor Zgłoś Share Napisano Sierpień 21, 2020 Zmieniłem: unsigned long long suma=0; na: #include <inttypes.h> uint64_t suma=0; i nadal nie działa "%llx" w printf też nic nie pomaga printf("suma: 0x%0.16llx\n",suma); czego jeszcze mogę spróbować ? Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
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 kontoZaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się