Каждая сторона условного оператора является выражением запятойC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Каждая сторона условного оператора является выражением запятой

Сообщение Anonymous »


В следующем примере каждая сторона условного оператора является выражением запятой. Значение первого выражения запятой - IX; Значение второго равно 0. < /p>

Код: Выделить всё

int ival = (ia != 0)
? ix = get_value(), ia[index] = ix
: ia = new int[sz], ia[index] = 0;
< /code>
< /blockquote>
Источник: C ++ Primer, третье издание, 26 марта 1998 г. < /p>
Что на самом деле происходит? Тройный оператор ?: 
имеет более высокий приоритет, чем оператор запятой, . Следовательно, все тройное выражение заканчивается при ia [index] = ix . Все после следующей запятой (

Код: Выделить всё

ia[index] = 0
) больше не является частью тройного выражения. Это то, что видит компилятор: < /p>
int ival = ((ia != 0)
? (ix = get_value(), ia[index] = ix)
: (ia = new int[sz])) ,
ia[index] = 0;
< /code>
Я нашел ошибку в книге? Или так кажется? Пожалуйста, проверьте, правильно ли это.


Подробнее здесь: https://stackoverflow.com/questions/796 ... expression
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»