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

Problem z podstawowymi operacjami logicznymi

Ostatnio zmodyfikowano 2017-10-15 20:46
Autor Wiadomość
programistamator
Temat założony przez niniejszego użytkownika
Problem z podstawowymi operacjami logicznymi
» 2017-10-15 20:32:20
Dzień dobry, chciałem poeksperymentować z operacjami logicznymi tak jak jest w kursie napisane i zmieniłem program, który jest w kursie na taki:
 wynik = false && false || !true && true || !( !true && true );
i teraz wynik wyświetla mi 1, kiedy na mój rozum zgodnie z kolejnością wykonuję działania tak:

 wynik = false && false || !true && true || !( false && true );
 wynik = false && false || !true && true || !false;
 wynik = false && false || !true && true || true;
 wynik = false && false || false && true || true;
 wynik = false && false && true || true;
 wynik = false && false && true;
 wynik = false && true;
 wynik = false;
Czyli powinien być zero. Co robię nie tak?
P-165798
matmati
» 2017-10-15 20:36:07
chodzi o to, że w wynik = false && false || !true && true || !( false && true ); && oznacza znak oraz czyli oba warunki muszą być spełnione a || oznacza lub. wykrzyknik oznacza , ze coś jest odwrotne. tak więc jeśli jedna z tych (||) rzeczy jest prawdziwa wtedy wynik będzie 1 a jeśli nie ( co tutaj jest nie możliwe) wynik będzie równy 0.
P-165799
Luq
» 2017-10-15 20:44:52
Operator && ma wyższy priorytet od ||, więc ten zapis jest równoważny z
( false && false ) ||( !true && true ) || !( false && true )
P-165801
matmati
» 2017-10-15 20:46:34
tak więc jeśli choć jedna z tych opcji jest prawdziwa wtedy wynik będzie 1 np jeśli będą 2 razy false lub true
P-165802
mateczek
» 2017-10-15 20:46:36
nie jesteś pewny priorytetów stosuj nawiasy
C/C++
#include <iostream>
int main() {
    bool b = false && false || true;
    std::cout << b << std::endl;
    b = false &&( false || true );
    std::cout << b << std::endl;
}
P-165803
« 1 »
  Strona 1 z 1