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++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как изменить массив с помощью numpy.where() на основе условного оператора?
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-