0 / 0 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
||||||
1 | ||||||
Тернарный оператор if22.03.2020, 11:42. Показов 1003. Ответов 10
Метки нет Все метки)
(
так записать нельзя?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
22.03.2020, 11:42 | |
Ответы с готовыми решениями:
10
Тернарный оператор vs if/else
Тернарный оператор Альтернатива if (.) {.} (тернарный оператор) |
Вездепух
![]() ![]() 10420 / 5692 / 1550
Регистрация: 18.10.2014
Сообщений: 14,019
|
|
22.03.2020, 11:54 | 2 |
Нет, нельзя. Оператор
?: - это оператор в выражении. В выражении не может быть никакого break , т.к. break - это не оператор.P.S. К if это никакого отношения на имеет. Поэтому "тернарный оператор if" - это какой-то набор слов.
0
|
Вездепух
![]() ![]() 10420 / 5692 / 1550
Регистрация: 18.10.2014
Сообщений: 14,019
|
|
22.03.2020, 11:59 | 4 |
А разве из кода это не очевидно?
Было бы здорово, если бы это было возможно: очень удобно и элегантно. Однако с throw так можно (ибо throw - оператор), а вот с break - нельзя.
0
|
22.03.2020, 12:42 | 5 | |||||
После подобных тем начинаешь верить, что начинать лучше с языков, где не смешиваются понятия инструкций и выражений.
ЗЫ брейк да и тернарник вообще не нужен. Можно записать так
0
|
Вездепух
![]() ![]() 10420 / 5692 / 1550
Регистрация: 18.10.2014
Сообщений: 14,019
|
||||||
22.03.2020, 19:37 | 6 | |||||
Трудночитаемо.
Условие самого цикла должно описывать весь домен итерации ("где мы ищем"). А условие досрочного завершения (например "нашли, что искали") должно реализовываться в теле цикла и вызвать завершение по break
А запихивание всех условий в кучу в условие цикла порождает нечитаемый код. Вариант ТС тоже не блещет удобочитаемостью, но там хотя бы условия разделены.
0
|
788 / 387 / 78
Регистрация: 10.06.2014
Сообщений: 2,463
|
|
22.03.2020, 19:43 | 7 |
Разве? Помоему наличие такой возможности будет ломать нормальное представление о работе тернарного оператора.
Ведь результат работы тернарного оператора это какое-то значение. А break не имеет никакого значения. Может подобная фича и была бы прикольной, но без тернарного оператора, что бы синтаксис был другим.
0
|
788 / 387 / 78
Регистрация: 10.06.2014
Сообщений: 2,463
|
|
22.03.2020, 19:43 | 8 |
Здесь был дубликат сообщения выше. Теперь он удалён.
0
|
Вездепух
![]() ![]() 10420 / 5692 / 1550
Регистрация: 18.10.2014
Сообщений: 14,019
|
||||||
22.03.2020, 19:51 | 9 | |||||
Не обязательно.
?: может использоваться и с void операндами.Это представление уже "сломано" с самого начала: как я уже сказал выше, в С++ всегда разрешалось
throw тоже "не имеет никакого значения" (он - void ). Попросту выражаясь, если выполнение ветки ?: приводит к передаче управления, то про значение можно смело забывать. break тоже, при желании, можно вписать в эту идеологию.
1
|
788 / 387 / 78
Регистрация: 10.06.2014
Сообщений: 2,463
|
|
22.03.2020, 20:10 | 10 |
Имеется ввиду что то вроде этого a < 0 ? f() : throw 123; // f выглядит так void f(){}
?
0
|
Вездепух
![]() ![]() 10420 / 5692 / 1550
Регистрация: 18.10.2014
Сообщений: 14,019
|
|
22.03.2020, 20:14 | 11 |
Ну, например, да.
Однако в первую очередь имеется в виду, что throw в ?: может сочетаться с любыми операндами. Не обязательно с void .
1
|
22.03.2020, 20:14 | |
Помогаю со студенческими работами здесь
11
Тернарный оператор и наследование
Шахматы(заменить тернарный оператор) на if else Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |