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

[AVR] Nieprawidłowe operandy operacji bitowej (o co może cho

bajerybajery 14 Wrz 2008 14:42 1038 3
  • #1 5534429
    bajerybajery
    Poziom 10  
    Dzień dobry,
    mam pewien problem którego nie mogę pokonać już od dwóch dni.
    Mam taki kawałek kodu:

    
    if ((Matryca[y]&potega)!=potega)
    {
      ...
    }
    


    i kompilator wyrzuca mi (błąd dotyczy linii w której znajduje się instrukcja IF (powyżej)):

    Cytat:
    ../Przesuwajacy_sie_napis_na_matrycy_5x7.c:371: error: invalid operands to binary &


    Dodam, że tablica zadeklarowana jest następująco:
    unsigned long Matryca[wysokosc_wyswietlacza][szerokosc_wyswietlacza]


    Dodam również, że zmienna 'y' jest typu int, natomiast zmienna 'potega' jest typu unsigned long. Nie wiem o co może chodzić - prosiłbym kogoś kto ma chwilkę o małą wskazówkę.
    Tłumacząc komunikat, kompilatorowi prawdopodobnie nie podobają się operandy operacji bitowej AND, ale dlaczego - nie wiem.
    Dodam, że to samo dzieje się gdy zamienie typ unsigned long na typ int w zmiennej 'potega' i tablicy 'matryca'.
  • Pomocny post
    #2 5534436
    Freddie Chopin
    Specjalista - Mikrokontrolery
    no i przeciez masz zadeklarowana tablice jako dwuwymiarowa, a operajci poddajesz tylko jako jednowymiarowa

    innymi slowy dokonujesz operacji typu

    (unsigneg long*)&(unsigned long)

    co daje oczywiscie blad, bo operatory bitowe nie sa zdefiniowane dla wskaznikow

    4\/3!!
  • #3 5534450
    bajerybajery
    Poziom 10  
    No nie! Dzięęęękuje!!! Nie wiem czy da się stawiać piwo na tym forum, ale jeśli tak to je masz ;-) Popatrz tylko jakie zaćmienie z mojej strony!
    Miałeś 100% racji. Podczas modernizacji kodu zmieniłem przypadkowo deklaracje tablicy.
    Powinno być:

    
    unsigned long Matryca[wysokosc_wyswietlacza]
    



    Dziękuję! Przepraszam, że niepokoiłem. Temat zamknięty.
REKLAMA