logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Typy zmiennych dlaczego char?

xamrex 23 Maj 2011 10:17 1250 4
REKLAMA
  • #1 9535115
    xamrex
    Poziom 28  
    Witam.
    Ostatnio bawię się wyświetlaczem z Nokii.
    Mam program kolegi drzasiek
    https://www.elektroda.pl/rtvforum/topic1994731.html#9502625
    Wszystko pięknie działa.

    Mam pytanie dotyczące klilku funkcji.
    Czemu zastosowano tam unsigned char zamiast np. uint8_t
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wg. mnie to nie ma różnicy w tym wypadku czy char czy uint8_t, ale ja bym zastosował wszędzie uint8_t a nie char.
    Może ktoś wie dlaczego został użyty tutaj char?
  • REKLAMA
  • #2 9535155
    michalko12
    Specjalista - Mikrokontrolery
    pytasz sie o char czy unsigned char, bo unsigned char i uint8_t to jest dokładnie to samo tylko w krótszej formie i to drugie wymaga dołączenia stdint.h.
  • REKLAMA
  • #3 9535165
    xamrex
    Poziom 28  
    Mnie się zawsze zdawało, że char to bardziej do tekstu pasuje (znaki alfanumeryczne)

    Więc dziwię się, ze ktoś tu zastosował chara zamiast uint8_t.
    Wam nie wydaje się to dziwne?
    Też w tym przypadku użylibyście chara zamiast uint8_t ?
  • REKLAMA
  • Pomocny post
    #4 9535174
    tmf
    VIP Zasłużony dla elektroda
    To nie jest dokładnie to samo. Akurat na AVR sprowadza się to do tego samego, ale ogólnie w C typy char wcale nie muszą być 8-bitowe.
    A wracając do pytania - a dlaczego kolega drzasiek potem stosuje int, a już w pętli uint? Tylko on wie :) Tak naprawdę nie ma żadnego uzasadnienia, podobnie jak nie ma uzasadnienia dlaczego wybrał ukł. współrzędnych, w którym od podanej pozycji musi odejmować jeden, i kilka innych rzeczy. Po prostu kody piszą ludzie, a ponieważ ludzie nie są doskonali, to i kody również.
  • #5 9535667
    drzasiek
    Specjalista CNC
    Kod ten powstał chyba w pierwszym tygodniu jak zacząłem programować :) A potem go już nie sprawdzałem, nie optymalizowałem dlatego mogą niektóre rzeczy być dziwne. Kod ten udostępniłem jako przykładowy który działa, nie sprawdzałem go pod kątem optymalizacji przed zamieszczeniem dlatego należy go sobie poprawić.
    Aha, i nie mylić bo ta biblioteka nie jest mojego autorstwa. Ja ją tylko trochę poprzerabiałem bo orginalna się nie kompilowała, w tej chwili nie pamiętam co i gdzie ja zmieniałem a co jest tak jak było.
    A co do tego char, to jak ci wygodnie. char zajmuje 1 bajt i uint8_t też? z tym że char zapiszesz liczby od -128 do 127 a uint8_t liczby od 0 do 255. Ale za to unsigned char zapiszesz te same liczby co uint8_t a zajmuje tyle samo w pamięci. Ja np jeśli potrzebuję małej zmiennej to wolę napisać char niż uint8_t a chociażby przez to, że char jest szybciej :) Ale jak cię gryzie to char to sobie pozmieniaj.
REKLAMA