Как работает вычисление выражения x < y < z в C++? [закрыт]

139
25 января 2020, 23:40
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском».

Закрыт 10 месяцев назад.

Подскажите где ошибка и почему я не прав(

    # include <iostream>
    using namespace std;
    int main ()
    {
    int x, y, z;
    cout << "Imput x " << endl; cin >> x; 
    cout << "Imput y " << endl; cin >> y; 
    cout << "Imput z " << endl; cin >> z; 
    if ( y < x < z || z < x < y)
    {cout<<"The middle number is "<<x<<endl;}
    else if ( x < y < z || z < y < x)
    {cout<<"The middle number is "<<y<<endl;}
    else if ( x < z < y || y < z < x)
    {cout<<"The middle number is "<<z<<endl;}
    else if ( x == y && y == z)
    {cout<<"All the numbers are same"<<endl;}
    }
Answer 1

Потому что выражения вида

y < x < z

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

(y < x) < z

т.е. сначала вычисляется y < x, преобразуется в зависимости от его истинности в 0 или 1, и сравнивается с z.

Вам следует писать

(y < x) && (x < z)
READ ALSO
Как присвоить переменную к указателю?

Как присвоить переменную к указателю?

У меня проблема с присваиванием значения переменной "a" к указателю "knockback", возникает ошибка: "error-type knockback это объявление не содержит класс...

115
Форвардная декларация typedef

Форвардная декларация typedef

Допустим, определен новый тип

121
Проверка нескольких bool в одном условии

Проверка нескольких bool в одном условии

Как я могу сократить данную строку? C++

108
Как отправить одним байтом значения дня(1-31)

Как отправить одним байтом значения дня(1-31)

Программа клиент должна отослать на сервер значения:

128