Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 4 mar 2025, o 16:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 30 mar 2016, o 21:47 
Offline
Użytkownik

Dołączył(a): 30 mar 2016
Posty: 30
Pomógł: 0

Witam wszystkich, piszę pierwszy program w c, mam pytanie odnośnie warunków if bo niestety mam jakieś problemy :(

1.
Jak mocno rozbudowane mogą być, ile wartości można że sobą porównywać jednym warunkiem if?
np. tutaj:
Kod:
if ((PINA & (1<<PA4)) | (PINA & (1<<PA5)) | (PINA & (1<<PA6)))

porównuje trzy wartości, chodzi mi o to ile ich może być maksymalnie, tak by kompilator dał radę.

2.
Oraz jak daleko można się posunąć z rozbudowywaniem "drzewa" warunków, ile poziomów można stworzyć? W sensie że warunek w warunku i tak dalej.

3.
Przy linijce kodu
Kod:
else if (!(PINC & (1<<PC4)) & (PINC & (1<<PC6)))


dostaję od Eclipse taki alert:
"suggest parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’ [-Wparentheses]"

Nie wiem o co chodzi niestety :(
Jestem bardzo początkujący. To moje pierwsze spotkanie z językiem c



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 22:02 
Offline
Użytkownik

Dołączył(a): 02 maja 2015
Posty: 100
Lokalizacja: Malbork
Pomógł: 12

Na początek polecam jakiś kurs od podstaw. Najlepiej się uczy z Mirka poradników. No i niebieska książka. Jak chcesz się czegoś nauczyć i nie uczyć się bzdur od samego początku to mogą się to okazać najlepiej wydane pieniądze. Z samych wideo poradników można ogromną wiedzę zdobyć. Wszystko tłumaczone tak aby każdy początkujący (i nie tylko) zrozumiał.
55555 napisał(a):
else if (!(PINC & (1<<PC4)) & (PINC & (1<<PC6)))

Krzyczy bo jest zła składnia... chodziło pewnie o operatory logiczne && lub || w poprzednim wersie. Poświęć trochę czasu na te podstawy.
Co do if -a to im większe drzewko zbudujesz tym więcej odłoży się na stosie... W niebieskiej książce wszystko masz jeżeli chodzi o pracę z uC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2016, o 22:27 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27361
Lokalizacja: Szczecin
Pomógł: 1042

55555 napisał(a):
"suggest parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’ [-Wparentheses]"

Dokładnie jak pisze kolega wyżej, kłaniają się podstawy podstaw, w tym przypadku zrozumienie co to są operatory logiczne i bitowe.

W takich warunkach można oczywiście używać i takich i takich, ale ważne aby za pomocą odpowiedniego formowania wyrażeń dać znać kompilatorowi które z nich mają być logiczne a które bitowe. Porównań może być dużo w jednym warunku ...

jeśli nie chcesz poznać podstaw to nie wiem czy dużo ci da taka prosta podpowiedź, że:

&&, || to operatory logiczne

zaś

&, | to operatory bitowe

widzisz różnicę ?


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 mar 2016, o 23:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Witam
Święte słowa kolegów .PODSTAWY. :)
" & && | || " - B.B.str.89
" if() " - B.B.str.60
Rozumiem że to początki początków i szybka zabawa w : jakieś reakcje w zależności od stanu pinów na wejściu. ;) uważaj bo ta zabawa bardzo uzależnia :)

1. mocno.!
2. daleko.!
kompilator da radę. Wszystko zależy jaki masz uc. Myślę że ciężko będzie sprawdzić bo trzeba by tego od groma napisać.
szkoda że nie masz Mirka B.B. szczerze polecam.
55555 napisał(a):
if ((PINA & (1<<PA4)) | (PINA & (1<<PA5)) | (PINA & (1<<PA6)))

" | " operator bitowy OR-suma bitowa . wynikiem operacji może być np. cały bajt (8 bitów).
" || " operator logiczny OR-suma logiczna.wynikiem operacji może być albo (1-PRAWDA) albo (0-FAŁSZ)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

3.teraz sam ogarniesz. tym razem nawiasy ok. tylko ten nieszczęsny operator zamiast logicznego jest bitowy.pewnie miało być (PC4 niski jednocześnie PC6 wysoki.)
uważaj na nawiasy, operatory oraz co w if()-ie sprawdzasz by wyszło NIE albo TAK. ;) pomyśl nad Mirka B.B.
pozdrawiam Darek.

Czy wasza "szara eminencja" wreszcie się nauczy wstawiać kody listingi itd... ??
topic7402.html --- >> SunRiver


Autor postu otrzymał pochwałę


Ostatnio edytowano 2 kwi 2016, o 22:13 przez Daro69, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2016, o 21:34 
Offline
Użytkownik

Dołączył(a): 30 mar 2016
Posty: 30
Pomógł: 0

Ślicznie dziękuje za pomoc, wszystko poszło po zmianie operatorów. Oczywiście będę się edukował. Potrzebowałem tego na szybko. Jeszcze raz ślicznie dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO