W instrukcji if sprawdzany jest warunek (A || B). Zapis || oznacza alternatywę logiczną (OR): całe wyrażenie jest prawdziwe, jeśli przynajmniej jeden z operandów jest prawdziwy.
Podstawowe przypadki (tabela prawdy dla OR) można streścić tak:
- 0 || 0 → 0 (fałsz)
- 0 || 1 → 1 (prawda)
- 1 || 0 → 1 (prawda)
- 1 || 1 → 1 (prawda)
Dla danych wejściowych A = 0 i B = 0 mamy więc:
(A || B) = (0 || 0) = 0
Warunek w if jest fałszywy, więc program nie wykona instrukcji C = 1; z pierwszego bloku. Zamiast tego przejdzie do gałęzi else i wykona przypisanie C = 0;. Ostatecznie C ma wartość 0.
Dlaczego pozostałe odpowiedzi są błędne?
- "1" byłoby poprawne tylko wtedy, gdyby którekolwiek z A lub B było równe 1 (np. A=1, B=0). Przy dwóch zerach OR nie "zaskakuje".
- "Nie można określić" nie pasuje, bo warunek i wartości wejść są jednoznaczne; nie ma tu losowości ani danych z zewnątrz.
- "Kod jest niepoprawny" jest nieuzasadnione: składnia if/else z operatorem || jest typowa w wielu językach (np. rodzina C). Nawet jeśli nie wskazano języka, interpretacja logiczna 0/1 w tym schemacie pozostaje czytelna.
Wskazówka egzaminacyjna: zawsze sprowadź warunek do wartości 0/1 (prawda/fałsz), a dopiero potem zdecyduj, czy wykona się blok if czy else. To minimalizuje błędy wynikające z pośpiechu.