15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
|
||||||
1 | ||||||
Тернарная операция. Пустое значение08.09.2016, 14:23. Показов 2973. Ответов 12
Метки нет (Все метки)
Всем привет.
Есть условие. Если проверка проходит, то переменной присваивается значение, если нет, то не присваивается. Можно ли у тернарной операции не возвращать значение в случае else? например
0
|
08.09.2016, 14:23 | |
Ответы с готовыми решениями:
12
Тернарная операция Тернарная операция Тернарная операция Тернарная условная операция |
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|||||||||||
08.09.2016, 14:44 | 2 | ||||||||||
Сообщение было отмечено Allius25 как решение
Решение
Стандарта нет под рукой, но мне кажется, что нельзя. А что мешает записать
Или
1
|
18826 / 9829 / 2403
Регистрация: 30.01.2014
Сообщений: 17,265
|
||||||
10.09.2016, 18:05 | 3 | |||||
Allius25, в GCC есть расширение языка, которое позволяет опускать второе выражение в условном операторе.
Например:
2
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
10.09.2016, 22:10 | 5 |
Видимо, имеется в виду, что переменной change уже присвоено значение. Эквивалентные конструкции в посте 2 тоже это предполагают. Если нет - компилятор должен дать варинг на использование неинициализированной переменной.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
||||||
10.09.2016, 22:17 | 6 | |||||
не а
как видишь, объявляется и иногда инициализируется, в одной строчке
кстати твоя запись тем же грешит может даже и дает, но кто их читает я не понимаю чем запись
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
10.09.2016, 22:27 | 7 |
ValeryS, понял вас. Действительно, одновременное декларирование и урезанная тернарка (как и мои советы) - грязная ошибка. Не обратил на это дело внимания, пошел на поводу у ТС.
Ну, если жизнь не дорога...
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
||||||
10.09.2016, 23:16 | 8 | |||||
Байт,
допустим что ТС утрировал ситуацию и переменная где то инициализируется тогда предположение будем считать верным но непонятно зачес сюда запихивать тернарную операцию если она суда не запихивается по условию т.е одна ветка, второй нет почему не if???
0
|
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
|
||||||
12.09.2016, 14:52 [ТС] | 9 | |||||
ValeryS,
А чем эта запись не правильна? Тем что инициализация и объявление на одной строке? Правильно ли я понял, что будет правильно
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
12.09.2016, 21:14 | 10 | |||||
Да, именно так. Потому что при isTrue!=1 никто не знает что такое change. Фактически это эквивалентно коду
1
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
|
||||||
12.09.2016, 21:34 | 11 | |||||
нет
правильно будет
объявляем переменную и инициализируем её 0, то бишь false если условие истина то присваиваем true, если нет оставляем все как есть (false) но тоже самое делает и мой код только он более понятен, и сопровождающий код, не будет бегать за мной с топором
1
|
15 / 15 / 8
Регистрация: 17.06.2013
Сообщений: 209
|
|
12.09.2016, 22:21 [ТС] | 12 |
0
|
18826 / 9829 / 2403
Регистрация: 30.01.2014
Сообщений: 17,265
|
||||||||||||||||
12.09.2016, 22:25 | 13 | |||||||||||||||
На всякий случай, если кто не читал описание сокращенного условного оператора на сайте GCC, - его работа эквивалентна такому коду:
Скажем так:
Т.е. в его работе нет места UB.
2
|
12.09.2016, 22:25 | |
12.09.2016, 22:25 | |
Помогаю со студенческими работами здесь
13
Тернарная условная операция С++ не смог разобраться (тернарная операция) Странно работает тернарная операция Условие с двоеточием. Тернарная условная операция Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |