54 Godzina 4
Operatory relacji oraz operatory, jako wyrażenia C++, zwracają 1 (gdy wyrażenie
jest prawdziwe) lub 0 (gdy wyrażenie jest fałszywe). Tak jak wszystkie wyrażenia, wykonywane są one w określonej kolejności. Każdy ma swój priorytet, określający, który operator zostanie uwzględniony jako pierwszy. Fakt ten jest ważny np. przy obliczaniu takiego wyrażenia:
if ( x > 5 S4 y > 5 || z > 5 )
W tym przypadku zamierzeniem programisty mogło być uzyskanie prawdy, gdy zarówno x jak i y jest większe od 5 lub z jest większe od 5. Z drugiej strony można to również interpretować jako prawdę, gdy x jest większe od 5 i jeśli y jest większe od 5 lub z jest większe od 5.
Jeśli x jest równe 3 i y oraz z są równe 10, to pierwsza interpretacja będzie prawdziwa (z jest większe od 5 zatem można pominąć warunek na x i y), natomiast druga będzie fałszywa (nie jest prawdą że x jest większe od 5 zatem nie ma znaczenia, że y i z są większe od 5).
Kolejność wykonywania operatorów można zmienić stosując nawiasy (tak jak w przypadków operatorów matematycznych).
if ( ( x > 5 ) && (y>5 || z>5) )
Jeśli podstawimy podane wyżej wartość, to uzyskamy wyrażenie fałszywe. Nie jest prawdą że x jest większe od 5, zatem lewa strona wyrażenia && jest fałszywa, z czego wynika, że całe wyrażenie jest fałszywe.
Warto jest wykorzystywać nawiasy dla określenia kolejności wykonywania operatorów logicznych. Pamiętaj, że sztuką jest napisanie takiego programu, który jednocześnie jest zrozumiały i prawidłowo działa.
W C++ wartość 0 traktowana jest jako fałsz, natomiast każda inna wartość jako prawda. Wielu programistów wykorzystuje tę zaletę w instrukcjach if. Np. instrukcja:
if (x) // jeśli x jest prawdziwe (różne od zera)
x = 0;
Można tę instrukcję przeczytać tak: „Jeśli x jest różne od zera to podstaw zero pod x”
Jest to trochę oszustwo, czytelniej byłoby tak:
Operatory relacji oraz operatory, jako wyrażenia C++, zwracają 1 (gdy wyrażenie jest prawdziwe) lub 0 (gdy wyrażenie jest fałszywe). Tak jak wszystkie wyrażenia, wykonywane są one w określonej kolejności. Każdy ma swój priorytet, określający, który operator zostanie uwzględniony jako pierwszy. Fakt ten jest ważny np. przy obliczaniu takiego wyrażenia:
if ( x > 5 H y > 5 II z > 5 )
W tym przypadku zamierzeniem programisty mogło być uzyskanie prawdy, gdy zarówno x jak i y jest większe od 5 lub z jest większe od 5. Z drugiej strony można to również interpretować jako prawdę, gdy x jest większe od 5 i jeśli y jest większe od 5 lub z jest większe od 5.
Jeśli x jest równe 3 i y oraz z są równe 10, to pierwsza interpretacja będzie prawdziwa (z jest większe od 5 zatem można pominąć warunek na x i y), natomiast druga będzie fałszywa (nie jest prawdą, że x jest większe od 5 zatem nie ma znaczenia, że y i z są większe od 5).
Kolejność wykonywania operatorów można zmienić stosując nawiasy (tak jak w przypadków operatorów matematycznych).
if ( (x>5)S&(y>5||z>5) )
Jeśli podstawimy podane wyżej wartość, to uzyskamy wyrażenie fałszywe. Nie jest prawdą, że x jest większe od 5, zatem lewa strona wyrażenia && jest fałszywa, z czego wynika, że całe wyrażenie jest fałszywe.
Warto jest wykorzystywać nawiasy dla określenia kolejności wykonywania operatorów logicznych. Pamiętaj, że sztuką jest napisanie takiego programu, który jednocześnie jest zrozumiały i prawidłowo działa.
W C++ wartość 0 traktowana jest jako fałsz, natomiast każda inna wartość jako prawda. Wielu programistów wykorzystuje tę zaletę w instrukcjach if. Np. instrukcja:
if (x) // jeśli x jest prawdziwe (różne od zera)
x = 0;
Można tę instrukcję przeczytać tak: „Jeśli x jest różne od zera to podstaw zero pod x" Jest to trochę oszustwo, czytelniej byłoby tak: