Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
61
Добавлен:
06.06.2015
Размер:
126.21 Кб
Скачать

лекция 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)