@SanityEC

Можно ли заменить if в данном случае?

z = myFunc(x , y);
     if (z < 0 ){
        cout << "Error" << endl;
     } else {
     cout << z << endl;}


Можно ли заменить if на конструкцию (? :) ? Только начал изучать C++, хотелось бы прояснить этот момент.
  • Вопрос задан
  • 433 просмотра
Решения вопроса 3
GavriKos
@GavriKos
В теории - да, можно. На практике - не сильно красиво ИМХО получится.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
можно однозначно
Ответ написан
@robotzet
deleted: как справедливо указали в комментариях, мой ответ неверен
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dnovikoff
@dnovikoff
Тернарный оператор может быть применен, если выражения имеют одинаковый результирующий тип.

Я не вижу какого типа у вас z, но предположу, что не const char*
В случае, если это const char*, то условие как минимум странное.

Для данного примера тернарный оператор применен быть не может.

Для такого примера его применить можно:
cout << (z < 0 ? "Error" : "Ok") << endl;
Не забывайте, что оператор << имеет больший приоритет, чем оператор меньше

Update:
Коллега в предидущем ответе предложил достаточно оригинальный способ
((z<0)?(std::cout << "Error"):(std::cout << z)) << std::endl;

Работать это будет, т.к. у обоих выражений будет одинаковый результирующий тип - std::ostream
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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