Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

prawda czy fałsz ??

Ostatnio zmodyfikowano 2013-02-14 22:24
Autor Wiadomość
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:
C/C++
#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
P-76270
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
C/C++
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;
P-76271
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
C/C++
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
C/C++
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
P-76277
Savail
» 2013-02-14 17:41:32
rzeczywiście, masz rację ison
P-76280
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
P-76285
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.
P-76298
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


C/C++
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
P-76302
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.

C/C++
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
P-76309
« 1 » 2
  Strona 1 z 2 Następna strona