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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 kwi 2025, o 02:41


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 12 kwi 2019, o 11:21 
    Offline
    Użytkownik

    Dołączył(a): 13 mar 2013
    Posty: 123
    Pomógł: 1

    Witam
    Mam trochę może głupia wątpliwość - jaka jest wartość logiczna wyrażenia a=0 ?
    Oczywistością jest iż wartość arytmetyczna jest równa 0. Natomiast zastanawia mnie co z logiką? Przecież operator przypisania wykonuje się prawidłowo , więc teoretycznie wartość logiczna mogła by być true..
    Wątpliwość powstała z okazji zastanawiania się nad instrukcją while (a=0).
    Domyślam sie ,że wartość logiczna w tym wypadku mimo prawidłowego wykonania przypisania powinna być równa false, i while (a=0) jest tożsame z while(0) ,ale chciałbym to potwierdzić.
    Dziekuję
    WTG



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 kwi 2019, o 11:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2017
    Posty: 368
    Lokalizacja: Gliwice
    Pomógł: 34

    MisterWhite napisał(a):
    Mam trochę może głupia wątpliwość - jaka jest wartość logiczna wyrażenia a=0 ?

    W tym wypadku nie ma nic o wartości logicznej wyrażenia, użyłeś operatora przypisania "=".
    Wartość logiczną uzyskasz korzystając z operatora porównania "==". Nie można obu używać zamiennie. To że często kompilator poprawi "=" na "==" nic nie zmienia.

    Mam wrażenie, że albo coś mocno mieszasz, albo ja nie zrozumiałem Twojego problemu :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 kwi 2019, o 11:39 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 lut 2014
    Posty: 164
    Pomógł: 3

    While zakłada że będzie tak długo się wykonywać aż będzie spełnione dla takiego warunku jaki mu postawisz, więc jeśli dla Ciebie prawdą jest że dopóki a=0 to będzie się to wykonywać. Natomiast samo sprawdzanie warunku w taki sposób jest błędne ponieważ a=0 to przypisanie wartości a porównanie warunku to a==0, co też jest nie najlepszym przyzwyczajeniem programistycznym.

    _________________
    ::::::: C ::::::::::
    :::::: C++ :::::::::



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 kwi 2019, o 11:50 
    Offline
    Moderator
    Avatar użytkownika

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

    Zealota napisał(a):
    W tym wypadku nie ma nic o wartości logicznej wyrażenia,


    Ale jest jest ;)

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


    - wynikiem wyrażenia będzie FALSE - czyli zero ... po prostu wartość zmiennej a po przypisaniu

    ------------------------ [ Dodano po: 3 minutach ]

    tylko trzeba sobie wziąć w nawias (a=0) żeby kompilator nie krzyczał - wtedy zrozumie, że chodzi mu o wartość wyrażenia w tych nawiasach

    _________________
    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: 12 kwi 2019, o 11:56 
    Offline
    Użytkownik

    Dołączył(a): 13 mar 2013
    Posty: 123
    Pomógł: 1

    mirekk36 napisał(a):

    - wynikiem wyrażenia będzie FALSE - czyli zero ... po prostu wartość zmiennej a po przypisaniu



    Wielkie dzięki, o to mi chodziło. Pytanie wzięło sie z analizy jednej z funkcji obsługującej UART i skonstruowanej jakoś tak : while( c= putc) {}. Chciałem mieć pewność jak się zachowa po odebraniu "0".
    Dzięki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 kwi 2019, o 11:58 
    Offline
    Moderator
    Avatar użytkownika

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

    No właśnie ten mechanizm tak się używa - sam tego używam w swoich bibliotekach często do wysyłania stringów ;)

    _________________
    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: 12 kwi 2019, o 12:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 15 lut 2017
    Posty: 368
    Lokalizacja: Gliwice
    Pomógł: 34

    No jak podejrzewałem, nie rozumiałem o co chodzi autorowi, natomiast kontrukcja:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    jest właściwie bez sensu :)
    Po co tak zapisywać jeżeli wartość logiczna (a=0) nigdy się nie zmienia, a zarazem ciało while nigdy się nie wykona, a pewnie sprytny kompilator usunie to z kodu.
    Oczywiście to tylko próba pokazania, że w jednej linijce można zrobić od razu przypisanie i sprawdzenie wartości logicznej natomiast podejrzewam, że sprawdzenie następuje "później" i to tylko na zmiennej "a". Jakby spojrzeć do asm to pewnie by się to wyjaśniło.
    Przykład z
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    oczywiście jest tym sensownym i dopiero teraz kumam o co chodziło autorowi :)



    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: 7 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO