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



Teraz jest 16 paź 2021, o 12:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 21 wrz 2021, o 19:49 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 55
Pomógł: 0

Hejka, mam pewnie pytanie. Otóż co jakiś czas zdarza mi się w kodzie popełnić "czeski" błąd przy operacji &=~ i wstawi mi się podwójna tylda. Kompilator nic nie krzyczy, a program wtedy naprawdę się dziwnie zachowuje, przez co długo dochodzę co się właściwie dzieje. I stąd pytanie z ciekawości, jak rozumieć operacje np PORTD &=~~(1<<6)? To równoważne bedzie z zapisem &=?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2021, o 20:32 
Offline
Użytkownik

Dołączył(a): 09 lip 2019
Posty: 56
Pomógł: 4

krawi92 napisał(a):
[...]
jak rozumieć operacje np PORTD &=~~(1<<6)?
To równoważne bedzie z zapisem &=?

Jeśli dobrze zrozumiałem pytanie - to generalnie tak.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zapis taki jak wyżej będzie równoważny
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

lub też po prostu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

idąc po kolei
czyli po kolei
(1 << 6) => 0b01000000
~(1 << 6) => 0b10111111
~(~(1 << 6)) => 0b01000000
finalnie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2021, o 21:47 
Offline
Użytkownik

Dołączył(a): 25 lip 2021
Posty: 55
Pomógł: 0

Zastanawialo mnie to, poniewaz wczoraj w jednym z makr wkradlo mi sie cos takiego, 4 piny sterowaly 2 silnikami, pod jeden z nich podlaczylem klawisz, ktory dzialal jak chcial,a wszystko bylo na 1 porcie. Nie moglem dojsc do ładu, czy to wina programu czy sprzętu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2021, o 21:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 175
Pomógł: 8

A dlaczego kompilator ma krzyczeć? Przecież nic nie zrobiłeś źle. Zaneguj coś co jest zanegowane, czyli raz zanegowana jedynka da zero a zaneguj ją drugi raz to co otrzymasz... z powrotem jedynkę.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 wrz 2021, o 23:08 
Offline
Moderator
Avatar użytkownika

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

krawi92 napisał(a):
i wstawi mi się podwójna tylda.


eeeh panie ... czytaj częściej mojego bloga, bo już od bardzo dawna podałem MEGA prosty sposób żeby się nigdy podwójna tylda nie pojawiała - bo to problem każdego początkującego ;) zresztą zobacz sam

http://mirekk36.blogspot.com/2012/03/ty ... lemow.html

a dokładnie to na forum jest opisane ;) post4081.html#p4081

_________________
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  
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