KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2008

PYTANIE NR 22.
W języku programowania C/C++ warunek instrukcji if (x<-5 || x>2) x++; jest spełniony dla wartości zmiennej x równej
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Warunek (x<-5 || x>2) jest prawdziwy, gdy spełniona jest co najmniej jedna z nierówności: x<-5 lub x>2. Dla x=3 zachodzi 3>2, więc całe wyrażenie ma wartość TRUE i instrukcja x++ zostałaby wykonana. Dla 2, -1 i -4 obie części warunku są fałszywe.

Pełne wyjaśnienie:

W C/C++ instrukcja if wykonuje wskazaną instrukcję tylko wtedy, gdy podane wyrażenie logiczne ma wartość prawda (TRUE). W rozpatrywanym warunku występują dwa porównania połączone operatorem alternatywy logicznej ||:

  • x<-5
  • x>2

Operator || zwraca TRUE, gdy przynajmniej jeden z jego operandów jest TRUE. Zatem cały warunek jest spełniony dla wartości x należących do sumy przedziałów: (-∞, -5) lub (2, +∞).

Dla x=3:

  • 3<-5 jest FALSE
  • 3>2 jest TRUE
  • FALSE || TRUE daje TRUE

To oznacza, że instrukcja x++ (inkrementacja, czyli zwiększenie x o 1) zostałaby wykonana.

Pozostałe odpowiedzi są błędne, bo nie spełniają żadnej z dwóch nierówności:

  • Dla x=2: 2>2 jest FALSE (to nie jest "większe", tylko "równe"), a 2<-5 też jest FALSE, więc całość FALSE.
  • Dla x=-1: -1 nie jest ani mniejsze od -5, ani większe od 2, więc całość FALSE.
  • Dla x=-4: -4 również nie jest mniejsze od -5, więc pierwszy warunek jest FALSE; drugi także FALSE.

Wskazówka egzaminacyjna: przy || zawsze sprawdzaj osobno każdą część i pamiętaj o różnicy między > a >= (oraz < a <=). To najczęstsze źródło pomyłek.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Operator || to alternatywa logiczna (OR). Zwraca wartość TRUE, gdy co najmniej jeden z warunków po jego lewej lub prawej stronie jest prawdziwy. Jeśli oba warunki są fałszywe, całe wyrażenie jest FALSE.
Rozbij warunek na dwie nierówności: x<-5 oraz x>2. Ponieważ jest to OR, wystarczy spełnienie jednej z nich. Otrzymujesz dwa zakresy: wartości mniejsze od -5 lub wartości większe od 2.
W zapisie x>2 znak > oznacza "ściśle większe". Dla x=2 porównanie 2>2 jest fałszywe, bo 2 jest równe 2, a nie większe. Spełniłoby to dopiero x>=2.
Gdy warunek jest TRUE, wykona się instrukcja x++, czyli inkrementacja. W praktyce oznacza to zwiększenie wartości zmiennej x o 1. Jeśli warunek jest FALSE, inkrementacja nie nastąpi.
Najczęściej myli się || (wystarczy jeden warunek) z && (muszą być spełnione oba). Drugim częstym błędem jest pomijanie różnicy między > a >= oraz między < a <=.
Sprawdź kolejno każdą część w nawiasie: najpierw porównania (np. x<-5 i x>2), a potem połącz je logiką OR. Jeśli choć jedno porównanie daje TRUE, wynik całego warunku z || jest TRUE.
Tak, bo grupują wyrażenie logiczne jako całość warunku instrukcji if. W tym przykładzie i tak porównania wykonują się przed ||, ale nawiasy zwiększają czytelność i pomagają uniknąć błędów w bardziej złożonych wyrażeniach.
To klasyczny wzorzec walidacji: sprawdzasz, czy wartość jest poza dopuszczalnym zakresem. Stosuje się go np. przy kontrolowaniu danych z formularza, parametrów funkcji, limitów w aplikacji lub filtrowaniu danych przed zapisem do bazy.
Warunek z || w stylu x<a || x>b zwykle oznacza "poza przedziałem". Z kolei "wewnątrz przedziału" zapisuje się najczęściej jako x>=a && x<=b. Kluczowe jest, czy potrzebujesz jednego czy dwóch jednoczesnych ograniczeń.
Tak. Dla || wystarczy, że prawdziwa jest jedna strona, aby cały warunek był TRUE. Wtedy instrukcja po if zostanie wykonana. Dlatego np. dla x=3 prawdziwe jest x>2, więc x++ zostanie wykonane.
info

Około 64% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "Warunek (x&lt;-5 || x&gt;2) jest prawdziwy, gdy spełniona jest co najmniej jedna z nierówności: x&lt;-5 lub x&gt;2."

Źródła:

  • cppreference.com: C++ operator precedence (logical operators and relational operators) — https://en.cppreference.com/w/cpp/language/operator_precedence (dostęp: 2026-02-27)
  • cppreference.com: C++ built-in operators, logical OR operator — https://en.cppreference.com/w/cpp/language/operator_logical (dostęp: 2026-02-27)
  • cppreference.com: C++ if statement — https://en.cppreference.com/w/cpp/language/if (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja C++: operatory relacyjne i logiczne (materiały referencyjne online)
  • Kurs podstaw C/C++: instrukcje sterujące (if/else) i operatory
  • Zadania treningowe z analizy wyrażeń logicznych (tablice prawdy, przedziały)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego