
- •лекция 4
- •План лекции
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Выражения и подвыражения
- •Классы, приоритеты и ассоциативность операций
- •Классы, приоритеты и ассоциативность операций
- •Приоритеты операций в
- •Приоритеты операций в
- •Приоритеты операций в языке Си
- •Выражения и подвыражения
- •Выражения l-value
- •Выражения l-value
- •Выражения l-value
- •Выражения l-value
- •Точки следования, побочные эффекты
- •Точки следования, побочные эффекты
- •Точки следования, побочные эффекты
- •Точки следования, побочные эффекты
- •Точки следования, побочные эффекты
- •Точки следования, побочные эффекты
- •Неявные преобразования типов
- •Неявные преобразования
- •Неявные преобразования чисел
- •Неявные преобразования чисел
- •Неявные преобразования чисел
- •Неявные преобразования чисел
- •Неявные преобразования указателей
- •Неявные преобразования указателей
- •Неявные преобразования указателей
- •Явные преобразования указателей
- •Заключение

лекция 4
ВЫРАЖЕНИЯ ЯЗЫКА С

План лекции
Выражения и подвыражения
Классы, приоритеты и ассоциативность операций языка Си
Выражения l-value
Порядок вычисления выражений, точки следования, побочные эффекты
Неявные преобразования типов

Выражения и подвыражения
<выражение>::= <выражение-присваивания>
|<выражение> ',' <выражение-присваивания>
<выражение-присваивания> ::= <условное-выражение>
| <унарное-выражение> <оператор- присваивания> <выражение-присваивания>
<оператор-присваивания>::= '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|='

Выражения и подвыражения
<условное-выражение> ::= <логическое-ИЛИ-выражение>
| <логическое-ИЛИ-выражение> '?' <выражение> ':' <условное-выражение>
<константное-выражение> ::= <условное- выражение>
<логическое-ИЛИ-выражение>::= <логическое-И-выражение>
| <логическое-ИЛИ-выражение> '||' <логическое-И-выражение>

Выражения и подвыражения
<логическое-И-выражение>::= <ИЛИ-выражение> | <логическое-И-выражение> '&&' <ИЛИ-выражение>
<ИЛИ-выражение>::= <исключающее-ИЛИ-выражение> | <ИЛИ-выражение> '|' <исключающее-ИЛИ-выражение>
<исключающее-ИЛИ-выражение>::= <И-выражение> | <исключающее-ИЛИ-выражение> '^' <И-выражение>

Выражения и подвыражения
<И-выражение>::= <выражение-равенства>
| <И-выражение> '&' <выражение- равенства>
<выражение-равенства>::= <выражение-отношения>
| <выражение-равенства> '==' <выражение-отношения>
| <выражение-равенства> '!=' <выражение-отношения>

Выражения и подвыражения
<выражение-отношения>::= <сдвиговое-выражение>
| <выражение-отношения> '<' <сдвиговое-выражение>
| <выражение-отношения> '>' <сдвиговое-выражение>
| <выражение-отношения> '<=' <сдвиговое-выражение> | <выражение-отношения> '>=' <сдвиговое-выражение>
x >> 2
x < y < z << 2 (x < y) < (z <<

Выражения и подвыражения
<сдвиговое-выражение>::= <аддитивное-выражение> | <сдвиговое-выражение> '>>' <аддитивное-выражение>
| <сдвиговое-выражение> '<<' <аддитивное-выражение>
<аддитивное-выражение>::= <мультипликативное-выражение>
| <аддитивное-выражение> '+' <мультипликативное-выражение> | <аддитивное-выражение> '-' <мультипликативное-выражение>
x + y
x >> y+z
x << (y+z)
x * y
x + y + z
x - y - z

Выражения и подвыражения
<мультипликативное-выражение>::= |
(double)x |
|
| |
<выражение-приведенное-к-типу> |
|
<мультипликативное-выражение> '*' |
x * y |
|
| |
<выражение-приведенное-к-типу> |
(x / y) / z |
<мультипликативное-выражение> '/' |
||
| |
<выражение-приведенное-к-типу> |
x % y |
<мулътипликативное-выражение> '%' |
<выражение-приведенное-к-типу>

Выражения и подвыражения
<выражение-приведенное-к-типу>::= <унарное-выражение>
|'(' <имя-типа> ')'
<выражение-приведенное-к-типу> <унарное-выражение>::= <постфиксное-выражение>
|'++' <унарное-выражение>
|'--' <унарное-выражение>
| <унарный-оператор>
<выражение-приведенное-к-типу> | 'sizeof' <унарное-выражение>
|'sizeof' '(' <имя-типа> ')'
<унарный-оператор>::= '&' | '*' | '+' | '-' | '~' | '!'
&x (int*) &x
x++ ++(x--) --(x++)
* (int*) &x
sizeof(x)
sizeof(int)