Скачать презентацию лекция 4 ВЫРАЖЕНИЯ ЯЗЫКА С План лекции Скачать презентацию лекция 4 ВЫРАЖЕНИЯ ЯЗЫКА С План лекции

04 Выражения.pptx

  • Количество слайдов: 18

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

План лекции Выражения и подвыражения Типы выражений Преобразование типов Операции над объектами различных типов План лекции Выражения и подвыражения Типы выражений Преобразование типов Операции над объектами различных типов данных Понятие логического выражения Приоритеты операций

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

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

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

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

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

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

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

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

Выражения и подвыражения <постфиксное-выражение>: : = <первичное-выражение> | <постфиксное-выражение> '[' <выражение> ']' | <постфиксное-выражение> Выражения и подвыражения <постфиксное-выражение>: : = <первичное-выражение> | <постфиксное-выражение> '[' <выражение> ']' | <постфиксное-выражение> '(' [<список-аргументов-выражений>] ')' | <постфиксное-выражение> '. ' <идентификатор> | <постфиксное-выражение> '->' <идентификатор> | <постфиксное-выражение> '++' | <постфиксное-выражение> '--' x A[x] f (x, y) point. x point->x i++ i--

Выражения и подвыражения <первичное-выражение>: : = <идентификатор> | <константа> | <строка> | '(' выражение Выражения и подвыражения <первичное-выражение>: : = <идентификатор> | <константа> | <строка> | '(' выражение ')' x 1. 25 f "ABCDEF" (x+y)

Выражения и подвыражения <константа>: : = <целая-константа> | <символьная-константа> | <константа-с-плавающей-точкой> | <константа-перечисление> Выражения и подвыражения <константа>: : = <целая-константа> | <символьная-константа> | <константа-с-плавающей-точкой> | <константа-перечисление>

Выражения и подвыражения <список-аргументов-выражений>: : = <выражение-присваивания> | <список-аргументов-выражений> ', ' <выражение-присваивания> Выражения и подвыражения <список-аргументов-выражений>: : = <выражение-присваивания> | <список-аргументов-выражений> ', ' <выражение-присваивания>

Лексемы Операция Класс Приоритет Ассоциативность имена, литералы простые лексемы первичный 16 нет a[k] индексы Лексемы Операция Класс Приоритет Ассоциативность имена, литералы простые лексемы первичный 16 нет a[k] индексы постфиксный 16 слева направо f(…) вызов функции постфиксный 16 слева направо . прямой выбор постфиксный 16 слева направо -> опосредованный выбор постфиксный 16 слева направо ++ -- положительное и отрицательное приращение постфиксный 16 слева направо (имя типа) {init} составной литерал (C 99) постфиксный 16 слева направо ++ -- положительное и отрицательное приращение префиксный 15 справа налево sizeof размер унарный 15 справа налево ~ побитовое НЕ унарный 15 справа налево ! логическое НЕ унарный 15 справа налево -+ изменение знака, плюс унарный 15 справа налево & адрес унарный 15 справа налево

Лексемы Операция Класс Приоритет Ассоциативность * опосредование (разыменование) унарный 15 справа налево (имя типа) Лексемы Операция Класс Приоритет Ассоциативность * опосредование (разыменование) унарный 15 справа налево (имя типа) приведение типа унарный 14 справа налево */% мультипликативные операции бинарный 13 слева направо +- аддитивные операции бинарный 12 слева направо << >> сдвиг влево и вправо бинарный 11 слева направо < > <= >= отношения бинарный 10 слева направо == != равенство/неравенс тво бинарный 9 слева направо & побитовое И бинарный 8 слева направо ^ побитовое исключающее ИЛИ бинарный 7 слева направо | побитовое ИЛИ бинарный 6 слева направо && логическое И бинарный 5 слева направо || логическое ИЛИ бинарный 4 слева направо ? : условие тернарный 3 справа налево

Лексемы Операция Класс Приоритет Ассоциативность = += -= *= /= %= <<= >>= &= Лексемы Операция Класс Приоритет Ассоциативность = += -= *= /= %= <<= >>= &= ^= |= присваивание бинарный 2 справа налево , последовательная оценка бинарный 1 слева направо

Заключение Выражения и подвыражения Приоритеты операций Далее Типы выражений Преобразование типов Операции над объектами Заключение Выражения и подвыражения Приоритеты операций Далее Типы выражений Преобразование типов Операции над объектами различных типов данных Понятие логического выражения