Wiem, że bardzo częso zamiennie używane są rożne nazwy dla określonego typu.
char = int8_t (zakres -128...127)
unsigned char = uint8_t (zakres 0..255)
O ile to jest jasne i jest tylko kwestią umowną to poniższy zapis już nie jest dla mnie jednoznaczny, a jest prawidłowy.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
"Sprawa" wyszła zupełnie przypadkowo podczas testowania wyświetlacza LCD.
Sprawdzałem tablicę znaków i chciałem wyświetlić z niej znak o kodzie 0xA6 (0b10100110) ale zauważyłem taką deklarację funkcji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
czyli teoretycznie zakres -128 .. 127 a akurat ten znak ma wartość 166 zaraz przypomniał mi sie rozdział z niebieskiej książki o typach i ich zakresie.
Jaki jest sens stosowania signed unisgned jeżeli widac na załaczonym ponizej przykładzie, że jeżeli wykonujemy nawet operacje arytmetyczne na liczbach ze znakiem czy bez to ważna jest tylko "wielkość" zmiennej a nie jej zakres.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I jeszcze jedno pytanie np. odnośnie deklaracji funkcji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
dla jasnosci kodu zamiast char powinno być uint8_t lub unsigned char bo wskaźnik nie może być ujemny - czy warto tak rozumowac? (chodzi mi tylko o wyrobienie od poczatku dobrych nawyków w pisaniu).
no i przy tej funkcji jeszcze małe pytanko. Czy dla ATmega 32 wielkośc 8 bitów dla wskaźnika do EEPROM nie jest zbyt mala? Ma on wielkość 1024 bajty więc adres mieści się w 10 bitach.