Неужели вы просто не можете инициализировать массивы с помощью тернарного оператора?
В самом деле, вы не можете.
В вашем примере вы не Я не хочу иметь только массив. Вам нужен строковый литерал - массив спецификаций c. К сожалению, компилятор не рассматривает answ
как единое целое, потому что вы пытаетесь использовать условный оператор для инициализации. Компилятор рассматривает его напрямую как массив char
s.
Но есть другой метод объявления C строк - с использованием const
и указателя.
const char* answ = ans > 0 ? "Anton" : "Danik";
Обратная сторона этого подход такой, ну, ну, const
- вы не можете изменить эту строку.
Вот почему, если вы используете C ++, вы должны использовать его строки - std::string
:
std::string answ = ans > 0 ? "Anton" : "Danik";
В C вы могли бы сделать:
char answ[6];
ans > 0 ? strcpy(answ, "Anton") : strcpy(answ, "Danik");
Но на данный момент тернарный оператор просто менее подробен, чем обычный if-else , поэтому не делайте этого .