ВУЗ:
Составители:
Рубрика:
21
Первый операнд может быть целого или плавающего типа (а так-
же указателем, ссылкой или элементом перечисления). Для этой опера-
ции важно, является значение первого операнда нулем или нет. Если
операнд1 не равен 0, то вычисляется операнд2 и его значение является
результатом операции. Если операнд1 равен 0, то вычисляется опе-
ранд3, и его значение является результатом операции. Заметим, что
вычисляется либо операнд2, либо операнд3, но не оба.
Пример:
max= a<=b? b:a;
Здесь переменной max присваивается максимальное значение из
переменных а и b.
Если в условной операции операнд2 и операнд3 являются адрес-
ными выражениями, то тернарная операция может стоять слева от знака
присваивания:
a<b? a:b = c*x+d;
Здесь значение выражения c*x+d присваивается меньшей из двух
переменных а и b.
3.9. Операция следования
Символом операции следования является , (запятая). Выражения,
разделенные этим символом, выполняются слева направо строго в том
порядке, в котором они перечислены.
Результатом этой операции является результат последнего выра-
жения. Если оно является адресным выражением, то и результат опера-
ции также является адресным выражением.
Примеры:
int a=3, b=8, c; // здесь запятая – разделитель, а не операция;
c=a++, a+b; // здесь а станет равно 4, а с 12;
(b--,c)*=3; // здесь b станет равно 7, а с 36.
Операция следования часто используется в операторе for. В раз-
личные части этого оператора можно включить несколько выражений,
например, для параллельного изменения двух индексов. Это иллюстри-
руется функцией REVERSE(S), которая располагает строку S в обрат-
ном порядке на том же месте.
void REVERSE ( char S[ ] ){
int C, I, J;
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »