Игнорируется условие в 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"...