Урок 5.2. Оператор-выражение

5.2. Оператор-выражение

Любое выражение будет оператором, если за ним следует знак точка с запятой. Таким образом, оператор-выражение имеет следующий общий вид записи:

<выражение>;

Как уже отмечалось, любой оператор может иметь метку, и далее при представлении общих форм записи операторов этот факт специально не отражается, но всегда подразумевается. Оператор-выражение относится к классу простых операторов Си. В результате выполнения в программе оператора-выражения вычисляется значение выражения в соответствии с теми операциями, которые в нем определены. Чаще всего в выражении имеется одна или несколько операций присваивания, и тогда оператор-выражение Си имеет тот же смысл, что и оператор присваивания в других языках программирования. Рассмотрим примеры фрагментов программ с использованием операторов-выражений.

Пример 5.2.1.
int x, y. z;
x = -3 + 4 * 5 - 6;
y = 3 + 4 % 5 - 6;
z = -3 * 4 % - 6 / 5;

В результате выполнения этих операторов х примет значение 11, у значение 1, а z значение 0. В соответствии с приоритетами операций распишем последовательность действий, используя круглые скобки.

Для х = -3 + 4 * 5 - 6 Для у = 3 + 4 % 5 - 6 Для z = - 3 * 4 % - 6 / 5
x = (-3)+4*5-6

x = (-3)+(4*5)-6

x = ((-3)+(4*5))-6

x = (((-3)+(4*5))-6)

( x = (((-3)+(4*5)-6))

y =  3+(4%5)-6

y = (3+(4%5))-6

y = ((3+(4%5)-6)

( y = ((3+(4%5)-6))

z = (-3)*4%(-6)/5

z = ((-3)*4)%(-6)/5

z =(((-3)*4)%(-6))/5

z = ((((-3)*4)%(-6))/5)

( z = ((((-3)*4)%(-6)/5))

 

Пример 5.2.2.
int x = 2, y, z;
x *= 3 + 2,  x *= y = z = 4;

В этом примере оператор-выражение содержит выражение с запятой, состоящее из двух подвыражений. В начале вычисляется первое подвыражение, затем второе. В результате выполнения оператора-выражения z и у примут значение 4, а х значение 40.Обратите внимание, что при описании x инициализируется значением 2. Последовательность действий:

Для 1-го выражения Для 2-го выражения
х = х*(3+2)

х = (х*(3+2))

( х = (х*(3+2)))

(z = 4)(y = (z=4))

x = (x*(3+2))*(y=(z=4))

x = ((x*(3+2))*(y=(z=4)))

( x = ((x)*(3+2))*(y=(z=4))))

Пример 5.2.3.
int x = 2, y = 1, z = 0;
x = x && y || z;
y = x++ -1;
z = ++x - 1;

В результате выполнения этого фрагмента х примет значение 3, у примет значение 0, а z примет значение 2. В результате выполнения первого оператора-выражения х примет значение 1, так как правая часть операции присваивания ( логическое выражение ) будет ИСТИНА, затем после выполнения второго оператора х примет значение 2, ввиду того что в нем содержится постфиксная форма операции увеличения х++, и, наконец, при выполнении третьего оператора х увеличится еще на единицу, ввиду наличия префиксной формы ++х. Значения для у и для z очевидны и определяются спецификой применения постфиксной и префиксной операции для х.

рассказать друзьям и получить подарок

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов