Условная операция (?:)

Эта операция тернарная, то есть имеет три операнда.

Ее формат:

операнд_1? операнд_2: операнд_3

Первый операнд может иметь арифметический тип или быть указателем. Он оце­нивается с точки зрения его эквивалентности нулю (операнд, равный нулю, рас­сматривается как false, не равный нулю – как true). Если результат вычисления операнда 1 равен true, то результатом условной операции будет значение второго операнда, иначе – третьего операнда. Вычисляется всегда либо второй операнд, либо третий. Их тип может различаться. Условная операция является сокращен­ной формой условного оператора if (он рассмотрен далее).

int a = 11, b = 4, max;

max = (b > a)? b: a;

printf(RUS("Наибольшее число: %d"), max);

Результат работы программы:

Наибольшее число: 11

Другой пример применения условной операции. Требуется, чтобы некоторая целая величина i увеличивалась на 1, если ее значение не превышает n, а иначе принимала значение 1:

i = (i < n)? i + 1: 1;

Не рассмотренные в этом разделе операции будут описаны позже.

Выражения

Выражения состоят из операндов, операций и скобок и используются для вычисления некоторого значения определенного типа. Каждый операнд является, в свою очередь, выражением или одним из его частных случаев – константой или переменной.

Примеры выражений:

(а + 0.12)/6

х && у ||!z

(t * sin(x)-1.05e4)/((2 * k + 2) * (2 * k + 3))

Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, унарные операции, условная операция и операции присваивания выполняются справа налево, остальные – слева направо. Например, в выражении а = b = с сначала b = c, а затем a = b, выражение a + b + c выполняется как (а + b) + с. Порядок вычисления подвыражений внутри выражений не определен: например, нельзя считать, что в выражении (sin(x + 2) + cos(y + 1)) обращение к синусу будет выполнено раньше, чем к косинусу, и что х + 2 будет вычислено раньше, чем y + 1.

Результат вычисления выражения характеризуется значением и типом. Например, если а и b – переменные целого типа и описаны так:

int а = 2, b = 5;

то выражение а + b имеет значение 7 и тип int, а выражение а = b имеет значение, равное помещенному в переменную а (в данному случае 5) и тип, совпадающий с типом этой переменной. Таким образом, в C++ допустимы выражения вида а = b = с: сначала вычисляется выражение b = с, а затем его результат становится правым операндом для операции присваивания переменной а.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: