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

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

Сообщение Anonymous »

int ival = (ia != 0)
? ix = get_value(), ia[index] = ix
: ia = new int[sz], ia[index] = 0;
< /code>

В следующем примере каждая сторона условного оператора является выражением запятой.
значение первого выражения запятой - IX; Значение второго - 0.
Publisher: Addison Wesley Stanley B. Lippman Hosée Lajoie Третий издание 26 марта 1998 г. < /p>
< /blockquote>
Что на самом деле происходит? Тройный оператор?: Имеет более высокий приоритет, чем оператор запятой. Следовательно, все тройное выражение заканчивается при 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>
Я нашел ошибку в праймере C ++. Или так кажется? Пожалуйста, проверьте, правильно ли это.

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

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