Презентация Выражения языка С онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Выражения языка С абсолютно бесплатно. Урок-презентация на эту тему содержит всего 44 слайда. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Выражения языка С
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:44 слайда
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:109.08 kB
- Просмотров:53
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№5 слайд
![Обзор операций языка Си](/documents_6/8f428c96964daf149142a14570e319ac/img4.jpg)
Содержание слайда: Обзор операций языка Си 3/3
Ассоциативность бинарных операций задает расстановку скобок в выражениях, содержащих операции одного приоритета
Левоассоциативные -- слева направо
Правоассоциативные -- справа налево
Операции языка Си одного приоритета имеют одинаковую ассоциативность
Иначе расстановка скобок неоднозначна
№11 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img10.jpg)
Содержание слайда: Выражения и подвыражения
<выражение>::=
<выражение-присваивания>
| <выражение> ',' <выражение-присваивания>
<выражение-присваивания> ::=
<условное-выражение>
| <унарное-выражение> <оператор-присваивания> <выражение-присваивания>
<оператор-присваивания>::= '=' | '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '&=' | '^=' | '|='
№12 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img11.jpg)
Содержание слайда: Выражения и подвыражения
<условное-выражение> ::=
<логическое-ИЛИ-выражение>
| <логическое-ИЛИ-выражение> '?' <выражение> ':'
<условное-выражение>
<константное-выражение> ::= <условное-выражение>
<логическое-ИЛИ-выражение>::=
<логическое-И-выражение>
| <логическое-ИЛИ-выражение> '||'
<логическое-И-выражение>
№13 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img12.jpg)
Содержание слайда: Выражения и подвыражения
<логическое-И-выражение>::=
<ИЛИ-выражение>
| <логическое-И-выражение> '&&'
<ИЛИ-выражение>
<ИЛИ-выражение>::=
<исключающее-ИЛИ-выражение>
| <ИЛИ-выражение> '|'
<исключающее-ИЛИ-выражение>
<исключающее-ИЛИ-выражение>::=
<И-выражение>
| <исключающее-ИЛИ-выражение> '^'
<И-выражение>
№15 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img14.jpg)
Содержание слайда: Выражения и подвыражения
<выражение-отношения>::=
<сдвиговое-выражение>
| <выражение-отношения> '<'
<сдвиговое-выражение>
| <выражение-отношения> '>'
<сдвиговое-выражение>
| <выражение-отношения> '<='
<сдвиговое-выражение>
| <выражение-отношения> '>='
<сдвиговое-выражение>
№16 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img15.jpg)
Содержание слайда: Выражения и подвыражения
<сдвиговое-выражение>::=
<аддитивное-выражение>
| <сдвиговое-выражение> '>>'
<аддитивное-выражение>
| <сдвиговое-выражение> '<<'
<аддитивное-выражение>
<аддитивное-выражение>::=
<мультипликативное-выражение>
| <аддитивное-выражение> '+'
<мультипликативное-выражение>
| <аддитивное-выражение> '-'
<мультипликативное-выражение>
№17 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img16.jpg)
Содержание слайда: Выражения и подвыражения
<мультипликативное-выражение>::=
<выражение-приведенное-к-типу>
| <мультипликативное-выражение> '*'
<выражение-приведенное-к-типу>
| <мультипликативное-выражение> '/'
<выражение-приведенное-к-типу>
| <мулътипликативное-выражение> '%'
<выражение-приведенное-к-типу>
№18 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img17.jpg)
Содержание слайда: Выражения и подвыражения
<выражение-приведенное-к-типу>::=
<унарное-выражение>
| '(' <имя-типа> ')'
<выражение-приведенное-к-типу>
<унарное-выражение>::=
<постфиксное-выражение>
| '++' <унарное-выражение>
| '--' <унарное-выражение>
| <унарный-оператор>
<выражение-приведенное-к-типу>
| 'sizeof' <унарное-выражение>
| 'sizeof' '(' <имя-типа> ')'
<унарный-оператор>::= '&' | '*' | '+' | '-' | '~' | '!'
№19 слайд
![Выражения и подвыражения lt](/documents_6/8f428c96964daf149142a14570e319ac/img18.jpg)
Содержание слайда: Выражения и подвыражения
<постфиксное-выражение>::=
<первичное-выражение>
| <постфиксное-выражение> '[' <выражение> ']'
| <постфиксное-выражение>
'(' [<список-аргументов-выражений>] ')'
| <постфиксное-выражение> '.' <идентификатор>
| <постфиксное-выражение> '->' <идентификатор>
| <постфиксное-выражение> '++'
| <постфиксное-выражение> '--'
№24 слайд
![Выражения l-value Ошибка или](/documents_6/8f428c96964daf149142a14570e319ac/img23.jpg)
Содержание слайда: Выражения l-value
Ошибка или нет:
(A[i] < A[j] ? A[i] : A[j]) = 1 // min(A[i], A[j]) заменить на 1
A[ A[i] < A[j] ? i : j ] = 1
Выражения языка Си, значениям которых гарантированно соответствует ячейка памяти, называются l-value
Значениям, которые хранятся только в регистрах процессора, не соответствует никакая ячейка памяти
Только 5 видов выражений в языке Си являются l-value – см. след. слайд
Остальные виды выражений – не l-value
№25 слайд
![Выражения l-value l-value](/documents_6/8f428c96964daf149142a14570e319ac/img24.jpg)
Содержание слайда: Выражения l-value
l-value получаются при следующих операциях
Доступ к значению переменной
Доступ через указатель *
Доступ к элементу массива a[k]
Доступ к полю структуры или объединения student.name
Доступ к полю структуры или объединения через указатель pstudent->name
Все остальные операции дают выражения, не являющиеся l-value
№27 слайд
![Выражения l-value Пример int](/documents_6/8f428c96964daf149142a14570e319ac/img26.jpg)
Содержание слайда: Выражения l-value
Пример 1
int x; x = 2; // x – l-value
int A[10]; A[5] = 5+x; // A[5] – l-value, 5+x – не l-value
Пример 2
int x, y;
(x < y ? x : y) = 1; // ошибка, т.к. (x < y ? x : y) не l-value
*(x < y ? &x : &y) = 1; // ОК, т.к. *(x < y ? &x : &y) – l-value
Пример 3
(A[i] < A[j] ? A[i] : A[j]) = 1; // ошибка
A[ A[i] < A[j] ? i : j ] = 1; // ОК
№28 слайд
![Точки следования, побочные](/documents_6/8f428c96964daf149142a14570e319ac/img27.jpg)
Содержание слайда: Точки следования, побочные эффекты
Побочный эффект вычисления выражения – это факт изменения содержимого ячеек памяти в процессе вычисления выражения
Присваивание
x = 1;
Сложный побочный эффект
i = 0; A[i++] = i++; // чему равно i – 0 или 1?
В каком порядке выполнятся = и ++?
№30 слайд
![Точки следования, побочные](/documents_6/8f428c96964daf149142a14570e319ac/img29.jpg)
Содержание слайда: Точки следования, побочные эффекты
Между вычислением левого и правого аргументов в операциях &&, || и , (запятая)
Между вычислением первого и второго или третьего аргументов в операции ?:
В конце всего выражения
Перед входом в вызываемую функцию
В объявлении с инициализацией на момент завершения вычисления инициализирующего значения
В остальном порядок выполнения операций определяет компилятор
№31 слайд
![Точки следования, побочные](/documents_6/8f428c96964daf149142a14570e319ac/img30.jpg)
Содержание слайда: Точки следования, побочные эффекты
Пример 1
while (*p++ != 0 && *q++ != 0) *p = *q;
Все побочные эффекты *p++ != 0 проявятся до начала вычисления *q++ != 0
Правило 1
Все побочные эффекты *p++ != 0 и *q++ != 0 проявятся до начала вычисления *p = *q
Правило 3
Что делает этот цикл while?
№33 слайд
![Точки следования, побочные](/documents_6/8f428c96964daf149142a14570e319ac/img32.jpg)
Содержание слайда: Точки следования, побочные эффекты
Пример 3
int i = 0, j = i++, k = i++;
int x = f(i++) + g(j++) + h(k++);
Каждая из переменных i, j и k принимает новое значение перед входом в f, g и h соответственно
Порядок вызова функций f(), g(), h() неопределён
Порядок инкремента i, j, k неопределён
Если i, j и k – глобальные переменные, то значения j и k неопределены внутри f, значения i и k неопределены внутри g, значения i и j неопределены внутри h
№35 слайд
![Неявные преобразования чисел](/documents_6/8f428c96964daf149142a14570e319ac/img34.jpg)
Содержание слайда: Неявные преобразования чисел
Если какой-либо из аргументов имеет тип long double, то другой приводится к long double
В противном случае, если какой-либо из аргументов имеет тип double, то другой приводится к double
В противном случае, если какой-либо из аргументов имеет тип float, то другой приводится к float
В противном случае для обоих аргументов осуществляется целочисленное повышение; затем, если один из аргументов имеет тип unsigned long int, той другой преобразуется в unsigned long int
В противном случае, если один из аргументов принадлежит типу long int, а другой -- unsigned int, то результат зависит от того, покрывает ли long int все значения unsigned int
Если это так, то unsigned int приводится к long int
Если нет, то оба аргумента преобразуются в unsigned long int
В противном случае, если один из аргументов имеет тип long int, то другой приводится к long int
В противном случае, если один из аргументов -- unsigned int, то другой приводится к unsigned int
В противном случае оба аргумента имеют тип int
Подробно о каждом преобразовании см. след. слайды
№36 слайд
![Неявные преобразования чисел](/documents_6/8f428c96964daf149142a14570e319ac/img35.jpg)
Содержание слайда: Неявные преобразования чисел
Целочисленное повышение
Значения типов enum, signed char, short int, unsigned char, unsigned short int автоматически преобразуются в int (если значение представимо как int) или в unsigned int (в противном случае)
Для всех известных компиляторов enum, char, short int представимы как int
№37 слайд
![Неявные преобразования чисел](/documents_6/8f428c96964daf149142a14570e319ac/img36.jpg)
Содержание слайда: Неявные преобразования чисел
Целочисленные преобразования из типа со знаком ST в тип без знака UT
Если sizeof(ST) == sizeof(UT), то битовое представление не меняется
Если sizeof(ST) < sizeof(UT), то битовое представление со знаком дополняется старшими нулями
Если sizeof(ST) > sizeof(UT), то старшие разряды отбрасываются
Целочисленные преобразования из типа без знака UT в тип со знаком ST
Если sizeof(ST) >= sizeof(UT), то битовое представление не меняется
Если sizeof(ST) < sizeof(UT), то результат зависит от компилятора
№38 слайд
![Неявные преобразования чисел](/documents_6/8f428c96964daf149142a14570e319ac/img37.jpg)
Содержание слайда: Неявные преобразования чисел
Преобразования целые <--> числа с плавающей точкой
С плавающей точкой --> целое
Дробная часть отбрасывается
int x = (int)1.25; // x == 1
Если полученное значение выходит из диапазона целого типа, то результат неопределен
int x = (int)1e20; // рез-т неопределён
Целое --> с плавающей точкой
Если целое входит в диапазон типа с плавающей, но представляется неточно, то одно из двух ближайших значений с плавающей
Если выходит из диапазона типа с плавающей, то результат неопределен
№39 слайд
![Неявные преобразования чисел](/documents_6/8f428c96964daf149142a14570e319ac/img38.jpg)
Содержание слайда: Неявные преобразования чисел
Преобразования чисел с плавающей точкой из типа F1 в F2
Если sizeof(F1) <= sizeof(F2), то значение не меняется (но может измениться битовое представление)
Если sizeof(F1) > sizeof(F2) и входит в диапазон F2, то одно из двух ближайших значений
Если sizeof(F1) > sizeof(F2) и не входит в диапазон F2, то неопределено
№40 слайд
![Неявные преобразования](/documents_6/8f428c96964daf149142a14570e319ac/img39.jpg)
Содержание слайда: Неявные преобразования указателей
В операциях присваивания и сравнения целочисленное константное выражение со значением 0 автоматически преобразуется в указатель любого типа
Результатом преобразования 0 в указатель является NULL, отличный от всех остальных указателей
NULL не соответствует ни одной ячейке памяти
№42 слайд
![Неявные преобразования](/documents_6/8f428c96964daf149142a14570e319ac/img41.jpg)
Содержание слайда: Неявные преобразования указателей
Указатель типа void * автоматически преобразуется к указателю любого типа
Если результат подвергнуть явному обратному преобразованию, то мы получим прежний указатель
Значение типа функция автоматически преобразуется к типу указатель на функцию
Значение типа указатель на функцию автоматически преобразуется к типу функция
№43 слайд
![Явные преобразования](/documents_6/8f428c96964daf149142a14570e319ac/img42.jpg)
Содержание слайда: Явные преобразования указателей
Для указателей допускаются и другие преобразования, но в связи с ними возникает проблема зависимости результата от реализации. Эти преобразования должны быть специфицированы явным оператором преобразования типа или оператором приведения
Указатель можно привести к целочисленному типу, достаточно большому для его хранения; требуемый размер зависит от реализации. Функция преобразования также зависит от реализации
Объект целочисленного типа можно явно преобразовать в указатель. Если целое получено из указателя и имеет достаточно большой размер, это преобразование даст тот же указатель; в противном случае результат зависит от реализации
Указатель на один тип можно преобразовать в указатель на другой тип. Если исходный указатель ссылается на объект, должным образом не выровненный по границам слов памяти, то в результате может произойти ошибка адресации. Если требования на выравнивание у нового типа меньше или совпадают с требованиями на выравнивание первоначального типа, то гарантируется, что преобразование указателя в другой тип и обратно его не изменит; понятие "выравнивание" зависит от реализации, однако в любой реализации объекты типа char предъявляют минимальные требования на выравнивание.
Указатель может быть преобразован в другой указатель того же типа с добавлением или удалением квалификаторов того типа объекта, на который этот указатель показывает. Новый указатель, полученный добавлением квалификатора, имеет то же значение, но с дополнительными ограничениями, внесенными новыми квалификаторами. Операция по удалению квалификатора у объекта приводит к тому, что восстанавливается действие его начальных квалификаторов, заданных в объявлении этого объекта.
Наконец, указатель на функцию может быть преобразован в указатель на функцию другого типа. Вызов функции по преобразованному указателю зависит от реализации; однако, если указатель еще раз преобразовать к его исходному типу, результат будет идентичен вызову по первоначальному указателю.
Скачать все slide презентации Выражения языка С одним архивом:
Похожие презентации
-
Операции и выражения языка Си
-
Основные конструкции языка программирования. Турбо Паскаль (тестирование). 10 -11 класс
-
Кодирование основных типов алгоритмических структур на языках объектно — ориентированного и процедурного программирования
-
Графические возможности языка Visual Basic
-
Команды языка Паскаль
-
Операции и выражения. (Лекция 4)
-
Senler. Регулярные выражения в ключевом слове
-
Дополнительные возможности: регулярные выражения. Метрика бета-версия, отличия и логика работы
-
Основные понятия языка программирования. Структура ЯВУ
-
Типы языка Си. Лекция 3