Witam wszystkich. Mam pewien dziwny problem. Otóż żeby nie zaciemniać przejdę do sedna. Deklaruje i definiuje zmienne:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Następnie wykonuję obliczenie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem polega na tym, że
uint32_t powinien wystarczyć na pomieszczenie takiej zmiennej, natomiast uzyskuję następujące wartości:
Kod:
wynik = (1000 * 66) / 100
To daje:
Kod:
wynik = 66000 / 100
więc powinno wyjść 660. Natomiast wynik, który uzyskuje to 4. Wygląda na to, że liczba 66000 nie mieści się i zostaje przekręcona. tzn 66000-65535=465 i to dzielone przez 100 daje 4. Używam mikroprocesora ATmega8. Dlaczego mimo tak dużego zakresu jak uint32_t liczba przekracza zakres 16 bitów? Próbowałem również takiego rozwiązania:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Lecz uzyskuję nadal zły wynik. Czy ktoś mógłby mnie naprowadzić na poprawne rozwiązanie lub być może jest gdzieś błąd w moim rozumowaniu?
Pozdrawiam.