|
Тернарный оператор в левой части выражения, ? : = |
|
|
|
Feb 10 2014, 13:40
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Читаю: Код int32_t step_temp = Chan ? Step2 : Step1; Обрабатываю... Хочу записать обратно: Код (Chan ? Step2 : Step1) = step_temp; Получаю: error: #137: expression must be a modifiable lvalue Как обойти?
|
|
|
|
|
 |
Ответов
(1 - 14)
|
Feb 10 2014, 14:17
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(ViKo @ Feb 10 2014, 17:51)  Угодил. Тогда зачем ? : и в правой части? Не вижу логики.  Какую логику хотите увидеть? Цитата int32_t step_temp = Chan ? Step2 : Step1; Всё равно что записать Код if (Chan) step_temp=Step2; else step_temp=Step1; А от этого что ожидается Цитата (Chan ? Step2 : Step1) = step_temp; ?
|
|
|
|
|
Feb 10 2014, 14:23
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(_Артём_ @ Feb 10 2014, 17:17)  Какую логику хотите увидеть? Всё равно что записать Код if (Chan) step_temp=Step2; else step_temp=Step1; А от этого что ожидается? Элементарную логику... Код if (Chan) Step2 = step_temp; else Step1 = step_temp;
|
|
|
|
|
Feb 24 2014, 01:37
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(_Артём_ @ Feb 10 2014, 18:17)  Какую логику хотите увидеть? Всё равно что записать Код if (Chan) step_temp=Step2; else step_temp=Step1; А от этого что ожидается ? Один нюанс. Вернее два. 1. Оператор еще возвращает значение, а if нет. То есть оператор может быть использован в правой части оператора присваивания. Иногда это полезно. 2. Используя if можно проделать множество разнообразных операций по условию, а оператор только возвращает одно либо другое значение.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|