@student_007
i am developer

Несовместимые типы операндов?

int main() {
    //Параметры уравнения:
    double a, b;
    //Логическая переменная для записи проверяемых условий:
    bool state;
    //Ввод параметров уравнения:
    cout << "a = ";
    cin >> a;
    cout << "b = ";
    cin >> b;
    cout << "x is: ";
    //Проверка условий и поиск решения:
    state = (a != 0);
    state ? (cout << b / a << endl, exit(0)) : state = (a == 0) && (b == 0);
    cout << (state ? "any number!" : "no result!") << endl;
    return 0;
}

Почему выдает Ошибку " : "
  • Вопрос задан
  • 723 просмотра
Решения вопроса 2
saboteur_kiev
@saboteur_kiev Куратор тега C++
software engineer
да. тернарный оператор хочет чтобы ваши оба операнда были одного типа, а у вас void и без типа.
Перепишите такое с if/else
Ответ написан
Комментировать
@MarkusD Куратор тега C++
все время мелю чепуху :)
state ? (cout << b / a << endl, exit(0)) : state = (a == 0) && (b == 0);

Не стоит так писать. Мало того что это выражение не укладывается в синтаксис, так еще оно из себя представляет слепую зону, код в которой невидим. Никому в голову не придет читать exit(0) или конструкцию присвоения внутри тернарного оператора.

По синтаксису: тернарный оператор предполагает гарантированную выдачу одного из результатов. При этом, на выражения между : накладываются некоторые ограничения. Если выражения не проходят по ограничениям тернарного оператора, выражение тернарного оператора считается плохо сформированным, что и приводит к ошибке синтаксиса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы