Spec-Zone.ru › GCC 10

Далее: 128-разрядные целые числа, Предыдущий: Ссылка на тип с помощью typeof, Вверх: Расширения для языков семейства C [Оглавление][Индекс]

6.8 Условные выражения с опущенными операндами ¶

Средний операнд в условном выражении может быть опущен. Тогда, если первый операнд отличен от нуля, его значение является значением условного выражения.

Поэтому выражение

x ? : y

имеет значение x, если оно отлично от нуля; в противном случае, значение y.

Этот пример полностью эквивалентен

x ? x : y

В этом простом случае возможность опустить средний операнд не особенно полезна. Полезной она становится, когда первый операнд содержит или может содержать (если это аргумент макроса) побочный эффект. Тогда повторение операнда в середине приведет к выполнению побочного эффекта дважды. Опускание среднего операнда использует уже вычисленное значение без нежелательных эффектов повторного вычисления.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/gcc/Conditionals.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API