Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Операции присваивания






В результате операции присваивания (=) переменная получает новое значение. Она используется в операторе присваивания:

идентификатор = выражение;

Операция присваивания может присутствовать в любом выражении языка.

Например, в результате выполнения

c=(a=2)+(b=3) переменная а получит значение 2, b – 3, а с – 5;

i = j = 0 - присваивание 0 обеим переменным.

 

Операция “запятая”

Одно выражение может состоять из набора выражений, разделенных запятыми; например,

d=(b=a+1), c=a+2;

такие выражения вычисляются слева направо. Результатом всего выражения будет результат самого правого выражения списка.

z = (х = у, у = 15);

определяет следующие действия: значение переменной у присваивается переменной х; переменной у присваивается значение 15; z получает значение переменной у. Скобки здесь необходимы, поскольку операция запятая имеет более низкий приоритет, чем операция присваивания, записанная после переменной z.

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

Символы операций могут состоять из 1-го (- +, -, ~., & …), 2-х (==,! =, < =, +=, & & …) или 3-х символов (< < =, > > =).

 

Операции в Си выполняются в соответствии следующей таблице приоритетов операций:

Лексемы Операция Класс Приоритет Ассоциативность
имена, литералы простые лексемы первичный   нет
a[k] индексы постфиксный   слева направо
f(…) вызов функции постфиксный   слева направо
. прямой выбор постфиксный   слева направо
-> опосредованный выбор постфиксный   слева направо
(имя типа) {init} составной литерал (C99) постфиксный   справа налево
++ -- положительное и отрицательное приращение постфиксный   справа налево
sizeof размер унарный   справа налево
~ побитовое НЕ унарный   справа налево
! логическое НЕ унарный   справа налево
- + изменение знака, плюс унарный   справа налево
& адрес унарный   справа налево
* опосредование (разыменование) унарный   справа налево
(имя типа) приведение типа унарный   справа налево
* / % мультипликативные операции бинарный   слева направо
+ - аддитивные операции бинарный   слева направо
< < > > сдвиг влево и вправо бинарный   слева направо
< > < = > = отношения бинарный   слева направо
==! = равенство/неравенство бинарный   слева направо
& побитовое И бинарный   слева направо
^ побитовое исключающее ИЛИ бинарный   слева направо
| побитовое ИЛИ бинарный   слева направо
& & логическое И бинарный   слева направо
|| логическое ИЛИ бинарный   слева направо
?: условие тернарный   справа налево
= += -= *= /= %= < < = > > = & = ^= |= присваивание бинарный   справа налево
, последовательное вычисление бинарный   слева направо

При вычислении выражения первыми выполняются операции с большим приоритетом. На порядок выполнения операций с одинаковым приоритетом указывает ассоциативность операций.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.