prawda czy fałsz ??
Ostatnio zmodyfikowano 2013-02-14 22:24
kirito1996 Temat założony przez niniejszego użytkownika |
prawda czy fałsz ?? » 2013-02-14 15:20:27 witam, mam pytanko uczę się z kursów i doszedłem do operacji logicznych przeczytałem całą lekcję i na końcu jest dany kod: #include <iostream> int main() { bool wynik; wynik = true && false || !true && false || !( !true && false ); std::cout << "wynik = " << wynik << std::endl; return 0; } którego nie rozumiem możecie wytłumaczyć, gdy skopiowałem i skompilowałem to była prawda :) ale za nic w świecie nie umie se tego wytłumaczyć więc jak możecie wytłumaczcie dlaczego :d. jak próbowałem se to tłumaczyć wyglądało to tak; () mają pierwszeństwo, ( !true && false )- !true zmienia się w false, przed nawiasem znak ! zmienia wszystko w nawiasie na prawdę potem pozostały ! zamieniłem i tylko pierwsze ture i false miało fałsz |
|
Savail |
» 2013-02-14 16:03:59 wynik ma końcową wartość true bo conajmniej jedno z wyrażeń ma wartość true. !true możesz traktować jako if( true == false ) return true else return false; i tak samo z każdym innym wyrażeniem ze znakiem !. W skrócie to będzie wynik = false || true || false; |
|
ison |
» 2013-02-14 16:58:33 W skrócie to będzie wynik = false || true || false; |
jeśli już to false || false || true, ale tego nie można tak rozbijać, && nie ma wyższego priorytetu od || po prostu, od lewej do prawej true && false || !true && false || !( !true && false ) false || !true && false || !( !true && false ) false || false && false || !( !true && false ) false && false || !( !true && false ) false || !( !true && false ) false || !( false && false ) false || !( false ) false || true true
//edit mój błąd, poprawna wersja true && false || !true && false || !( !true && false ) false || !true && false || !( !true && false ) false || false && false || !( !true && false ) false || false || !( !true && false ) false || false || !( false && false ) false || false || true true
|
|
Savail |
» 2013-02-14 17:41:32 rzeczywiście, masz rację ison |
|
Elaine |
» 2013-02-14 18:37:25 && nie ma wyższego priorytetu od || |
Mówiąc ściślej, to jednak ma. 5.14, 5.15: logical-and-expression: inclusive-or-expression logical-and-expression && inclusive-or-expression
logical-or-expression: logical-and-expression logical-or-expression || logical-and-expression |
|
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2013-02-14 20:36:58 dobra dzięki wielkie za wytłumaczenie ;) pomogło mi to wielkie dzięki przynajmniej wiem już dokładnie o co chodzi.
Niektórzy powiedzieli by, po co mu ta wiedza skoro wie o co chodzi. Odpowiedź jest prosta chce wszystko zrozumieć gdy dla mnie błędem jest pominięcie czegoś do czego nie możemy dojść ;) ale ze mnie filozof :D. |
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2013-02-14 21:09:21 a jednak temat nie zakończony ^^ pozmieniałem se znaki ( || ! && ) i dalej nic nie mogę zrozumieć, rozpisałem to jak ison i wychodzi fałsz a jak skompiluje to prawda :/ może źle rozpisałem przyjrzyjcie się a może nawet zobaczycie czego nie rozumiem ;( chce się tego nauczyć :d wynik = true || false && !true || false && !( !true || false );
true && !true || false && !( !true || false )
true && false || false && !( !true || false )
false || false && !( !true || false )
false && !( !true || false )
false && !( false || false )
false && !( false )
false && false
false ?? z góry thax :p |
|
ison |
» 2013-02-14 21:53:44 A, rzeczywiście ma. Sorry za wprowadzenie w błąd. I tak w praktyce lepiej stawiać nawiasy aby ujednoznaczniać kod niż siedzieć z tabelką priorytetów w ręku. true || false && !true || false && !( !true || false ) true || false && false || false && !( !true || false ) true || false || false && !( false || false ) true || false || false && true true || false || false true
&& oblicza się przed ||, a nie tak jak w moim poprzednim poście - od lewej do prawej |
|
« 1 » 2 |