Прохожу тест-задачу:
С помощью тернарного оператора замените инициализацию переменной b в указанном коде:
int a = 10;
int b;
if (a > 0) {
if (a < 100) {
b = 1;
} else {
b = 0;
}
} else {
b = -1;
}
По-моему, тут надо использовать вложеный тернарный оператор, я сделал так:
int a = 10;
int b;
b = (a > 0) ? ((a < 100) ? b = 1 : b = 0) : b = -1 ;
но тест отвечает, что я не прав. Где я ошибаюсь и почему это так?
Да, вложенная тернарная операция. Логически сделал верно. Но допущена синтаксическая ошибка - попытка присвоить значение переменной b внутри тернарной операции.
Правильно должно быть так:
int a = 10;
int b = a > 0 ? a < 100 ? 1 : 0 : -1;
Вложенное выражение a < 100 ? 1 : 0 возвращает значение, которое используется в выражении выше a > 0 ? ВЛОЖЕННОЕ : -1, которое так же возвращает значение, но уже непосредственно в переменную b.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости