none
Операции отношения RRS feed

  • Вопрос

  • Как проверить результат выражения: 10<15<20?

    int i = 10, j=15, k=20;
    Console.WriteLine(i < j < k); 

    VS пишет что Оператор "<" невозможно применить к операнду типа "bool" и "int". 

    28 марта 2016 г. 5:50

Ответы

  • Операции сравнения возвращают значение типа bool. То есть сначала было вычислено выражение i < j и получено true или false а затем началось уже его сравнение с k. Отсюда и ошибка.

    Но вероятно мой ответ мало чего даст, так как я C# знаком плохо и правильный код вам подсказать не смогу...


    VB.Net - WPF, UWP

    • Помечено в качестве ответа Развитёр 28 марта 2016 г. 19:23
    28 марта 2016 г. 6:23
    Отвечающий
    1. С точки зрения компилятора все ясно: сложные выражения вычисляются последовательно, 10<15 в качестве результата дает значение типа bool, которое, действительно нельзя сравнивать с 20 (т.е. целой константой).
    2. У Вас классическая ошибка начинающего программиста. Нельзя прямо переносить математические формулы в программу. Несколько условных выражений нужно объединять операциями логического И: i < j && j < k. Так будет правильно.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа Развитёр 28 марта 2016 г. 19:23
    28 марта 2016 г. 6:24
  • Кстати если не ошибаюсь, то тут как раз приведен пример решающий вашу задачу.

    VB.Net - WPF, UWP

    28 марта 2016 г. 6:26
    Отвечающий

Все ответы

  • Операции сравнения возвращают значение типа bool. То есть сначала было вычислено выражение i < j и получено true или false а затем началось уже его сравнение с k. Отсюда и ошибка.

    Но вероятно мой ответ мало чего даст, так как я C# знаком плохо и правильный код вам подсказать не смогу...


    VB.Net - WPF, UWP

    • Помечено в качестве ответа Развитёр 28 марта 2016 г. 19:23
    28 марта 2016 г. 6:23
    Отвечающий
    1. С точки зрения компилятора все ясно: сложные выражения вычисляются последовательно, 10<15 в качестве результата дает значение типа bool, которое, действительно нельзя сравнивать с 20 (т.е. целой константой).
    2. У Вас классическая ошибка начинающего программиста. Нельзя прямо переносить математические формулы в программу. Несколько условных выражений нужно объединять операциями логического И: i < j && j < k. Так будет правильно.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа Развитёр 28 марта 2016 г. 19:23
    28 марта 2016 г. 6:24
  • Кстати если не ошибаюсь, то тут как раз приведен пример решающий вашу задачу.

    VB.Net - WPF, UWP

    28 марта 2016 г. 6:26
    Отвечающий
  • Спасибо всем за помощь и ценные ответы!
    28 марта 2016 г. 19:16