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

[avr-gcc] Szybkie lamerskie pytanie o porównanie liczb

mgradzki 10 Paź 2008 21:50 2013 2
  • #1 5619597
    mgradzki
    Poziom 16  
    Witam,
    sorki za lamerskie pytanie, ale nie mogę znaleźć informacji na temat porównywania zmiennych różnych typów w avr-gcc, a nie mam przy sobie zestawu uruchomieniowego i nie mogę sam sprawdzić, czy kod zadziała poprawnie :( .
    Chodzi mi konkretnie o rzecz prostą: czy można bez problemów porównać int z floatem, czy też należy zrzutować float na int (tu niestety tracimy informację o ułamku) albo int na float (tu problemy przypuszczam mogą być jeszcze większe) i dopiero wtedy porównywać ?

    Pozdrawiam.
  • Pomocny post
    #2 5620028
    Freddie Chopin
    Specjalista - Mikrokontrolery
    jesli dokonasz takiego porownania, to tak czy siak wymusisz rzutowanie niejawne - obydwie liczby musza byc tego samego typu. kompilator zrzutuje ci int'a na float'a.

    brak zestawu to nie problem - napisz kod i go skompiluj, a potem podejrzyj co tam w ASM nastawial.

    4\/3!!
  • #3 5620368
    mgradzki
    Poziom 16  
    Dzięki

    Kiedyś jak na PC (w Borlandzie) rzutowałem int na float to miałem problemy z dokładnością, bo po zrzutowaniu float nieco się różnił, co jest naturalne i wynika ze sposobu zapisu (i obliczania floata).

    Przypuszczam, że
    zakładając:
    int a
    float b

    warunki a>b oraz b>a zadziałają, a a==b nie zawsze

    Spróbuję, jak będą problemy to spróbuję z double, ale i to pewnie nie wiele pomoże więc będę liczył różnicę i jeśli będzie odpowiednio mała (rzędu 0.01), to będę uznawał, że liczby są równe.

    Z asemblerem to muszę jeszcze poczekać - jakieś pojęcie mam, ale nie aż takie, dlatego na razie piszę w gcc.

    Pozdrawiam
REKLAMA