Игнорируется условие в C++

Выполняю дз: в задании необходимо произвести вычисление y согласно одной из формул в зависимости от условия, однако после перепроверки вручную я увидел, что вычисления всегда проходят по первой части условия, игнорируя else if.

#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <math.h>

using namespace std;

int main()
{
    setlocale(LC_ALL, "Russian");

    float x, a, y;
    cout << "Введите x, a" << endl;
    cin >> x >> a;
    if (0 <= x <= 2)
        if (x + a > 0) y = a + log(x + a);
        else
        {
            cout << "ln не вычисляется" << endl;
            return 0;
        }
    else if (x > 2) y = sqrt(abs(sin(a * x)));
        else y = x * x - cos(a);
    
    cout << "При x=" << x << " a=" << a << " получаем y=" << y << endl;   
}

Ответы (1 шт):

Автор решения: Harry

Само собой.

0 <= x <= 2

означает

(0 <= x) <= 2

Поскольку если условие верно, то (0 <= x) превращается в 1 (true), если неверно — в 0 (false), а и то, и другое меньше 2 — условие всегда истинно...

То, что вы хотите, надо записывать как

0 <= x && x <= 2

что с учетом приоритета операторов выполняется как

(0 <= x) && (x <= 2)

и означает "x больше или равен 0 И x меньше или равен 2"...

→ Ссылка