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 ||:
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.