ATNEL tech-forum https://forum.atnel.pl/ |
|
Baardzo podstawowe pytanie o wartośc wyrażenia https://forum.atnel.pl/topic22165.html |
Strona 1 z 1 |
Autor: | MisterWhite [ 12 kwi 2019, o 11:21 ] |
Tytuł: | Baardzo podstawowe pytanie o wartośc wyrażenia |
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 |
Autor: | Zealota [ 12 kwi 2019, o 11:36 ] |
Tytuł: | Re: Baardzo podstawowe pytanie o wartośc wyrażenia |
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 |
Autor: | Lex_ [ 12 kwi 2019, o 11:39 ] |
Tytuł: | Re: Baardzo podstawowe pytanie o wartośc wyrażenia |
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. |
Autor: | mirekk36 [ 12 kwi 2019, o 11:50 ] |
Tytuł: | Re: Baardzo podstawowe pytanie o wartośc wyrażenia |
Zealota napisał(a): W tym wypadku nie ma nic o wartości logicznej wyrażenia, Ale jest jest 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 |
Autor: | MisterWhite [ 12 kwi 2019, o 11:56 ] |
Tytuł: | Re: Baardzo podstawowe pytanie o wartośc wyrażenia |
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 |
Autor: | mirekk36 [ 12 kwi 2019, o 11:58 ] |
Tytuł: | Re: Baardzo podstawowe pytanie o wartośc wyrażenia |
No właśnie ten mechanizm tak się używa - sam tego używam w swoich bibliotekach często do wysyłania stringów |
Autor: | Zealota [ 12 kwi 2019, o 12:20 ] |
Tytuł: | Re: Baardzo podstawowe pytanie o wartośc wyrażenia |
No jak podejrzewałem, nie rozumiałem o co chodzi autorowi, natomiast kontrukcja: 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 oczywiście jest tym sensownym i dopiero teraz kumam o co chodziło autorowi |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |