
- •2). Арифметические преобразования
- •1) Основные типы данных, операции и выражения
- •Билет №4
- •Билет№5
- •1). Символьные константы
- •2). Условный оператор
- •1). Операции отношения
- •1). Логические операции
- •2). Определение функции
- •Тип возвращаемого значения
- •Идентификатор или имя функции
- •Список аргументов или параметров
- •2). Вызов функции
- •Вызывающее окружение
- •1) Адресные операции
- •1). Операции над структурами и объединениями
- •2). Указатели и массивы
- •1). Операция sizeof
- •2). Перечисления
- •2). Типы переменных
Размещено на http://www.allbest.ru/
Билет №1
2). Для каждой группы операций в таблице приоритет одинаков. Чем выше приоритет группы операций, тем выше она расположена в таблице. Порядок выполнения определяет группировку операций и операндов.
() Вызов функции Слева направо
[] Выделение элемента массива
! Логическое отрицание Справа налево
- Изменение знака
++ Увеличение на единицу (increment)
-- Уменьшение на единицу (decrement)
~ Побитовое отрицание (complement)
& Побитовая операция И Слева направо
| Побитовая операция ИЛИ
^ Побитовая операция исключающее ИЛИ (eXclude OR)
<< Сдвиг влево
>> Сдвиг вправо
* Умножение Слева направо
/ Деление
% Деление по модулю
+ Сложение Слева направо
- Вычитание
< Меньше, чем Слева направо
<= Меньше или равно
> Больше, чем
>= Больше или равно
== Равно
!= Не равно
|| Логическая операция ИЛИ Слева направо
&& Логическая операция И Слева направо
= Присваивание Справа налево
+= Сложение с присваиванием
-= Вычитание с присваиванием
*= Умножение с присваиванием
/= Деление с присваиванием
%= Деление по модулю с присваиванием
>>= Сдвиг вправо с присваиванием
<<= Сдвиг влево с присваиванием
&= Побитовое И с присваиванием
|= Побитовое ИЛИ с присваиванием
^= Исключающее ИЛИ с присваиванием
, Запятая Слева направо
Билет№2
2). Арифметические преобразования
Подавляющее большинство операций вызывает преобразование и определяет типы результата аналогичным образом. Приводимая ниже схема в дальнейшем будет называться "обычными арифметическими преобразованиями". Сначала любые операнды типа char или short преобразуются в int, а любые операнды типа float преобразуются в double. Затем, если какой-либо операнд имеет тип double, то другой преобразуется к типу double, и это будет типом результата. В противном случае, если какой-либо операнд имеет тип long, то другой операнд преобразуется к типу long, и это и будет типом результата.
В противном случае, если какой-либо операнд имеет тип unsigned, то другой операнд преобразуется к типу unsigned, и это будет типом результата. В противном случае оба операнда будут иметь тип int, и это будет типом результата.
Билет№3,15(2)
1) Основные типы данных, операции и выражения
Основные объекты, с которыми работает программа на языке Си - переменные и константы. Переменные - поименнованые величины, значения которых, в отличие от констант могут меняться а процессе выполнения программы. Все переменные должны быть описаны; в описаниях указываются их типы и, возможно, начальные значения. Константам могут быть присвоены имена- синонимы констант в программе.
Имена переменных. Имена могут состоять из букв латинского алфавита, цифр и символа подчеркивания "_", который считается буквой. Строчные и прописные буквы различаются Beta, beta , BETA - разные имена. Число символов в имени не ограничено. В качестве имен переменных нельзя исползовать зарезервированные слова типа if, else, for, char, int и т.д. Все служебные слова должны быть набраны малыми буквами.
Типы данных. В языке Си имеются два существенно различных типа данных: int- целый и float - вещественный(с плавающей точкой). Из них можно создавать еще два типа: char - символьный , double - вещественный с двойной точности. Из этих четырех базовых типов может быть получено много других типов. При необходимости программист может изобрести любой желаемый тип данных.
Целые константы и константы с плавающей точкой записываются в общепринятой для языков программирования форме:
13, -941, 0, 76; 13.0, 13E+0, -1.76, 0.123e-2, 6.02E23
Плавающая константа состоит из десятичной целой части, десятичной точки, десятичной дробной части и степени, которая состоит из буквы E или е, за которой следует десятичный порядок. Перед показателями может стоять знак (+ или -). Либо десятичная точка, либо показатель, но не оба одновременно, могут быть опущены либо целая, либо дробная части.
В языке Си существуют правила записи восьмеричных и шестнадцатеричных чисел: если перед целым числом идет 0 (нуль). то это восьмеричная константа: 037, 0776; начальные 0X или 0x указывают на шестнадцатеричное число: 0x f37, 0X1FA.
Символьная константа состоит из заключенного в одиночные кавычки символа, например ' * ' . Символы в языке Си фактически являются целочисленными значениями. Их числовое значение соответствует внутреннему (машинному) представлению символов и некотором принятом стандартном коде. Например, в коде ASCII, широко применяемом в мини- и микрокомпьютерах, значение символа ' A ' равно 65, ' b ' - 98, ' 2' - 50.
Символы, не имеющие графического изображения, и некоторые специальные символы записываются следующим образом: \n - новая строка, \t - табуляция, \0 - нуль (пусто - конец строки), \\ - обратная косая черта, \' апостроф, \b - возврат на шаг, \r - возврат каретки, \f - перевод страницы. Присвоение константам символических имен происходит с помощью процессорного утверждения #define. Например, запись #define MAX 100 перед текстом основной программы определяет имя MAX, являющееся синонимом константы 100.
Строковая константа - это последовательность нуля и более символов, заключенная в двойные кавычки, например "Интересное сообщение" или " " - пустая строка. В конце каждой такой строки транслятор помещает нулевой символ \0, что сильно облегчает программисту поиск конца строки. Технически строка символов представляет собой одномерный массив, каждый элемент которого - один символ.
Описание переменных. Все переменные должны быть описаны до их использования. Описание задает тип, за которым следует список одной или более переменных этого типа. Например
int a, b; int low; char c; float x, dl;
Переменным в описаниях можно задавать начальные значения, объединяя таким образом описание и оператор присваивания.
int p = 1; float eps = 1.0 e-5;
Арифметические операции. Существуют арифметические операции: +, - , * , / и вычисление остатка от деления - %. Есть унарная операция - (унарный минус). При делении целых чисел дробная часть отбрасывается. Порядок выполнения операциями совпадает с общепринятыми: операции + и- имеют одинаковый приоритет, причем он ниже приоритета операций /, * и % . Самый высокий приоритет унарный минус.
2). Понятие оператора
Операторы языка Си управляют процессом выполнения программы.
Пустой оператор - это оператор, состоящий только из точки с запятой. Он может появиться в любом месте программы, где по правилам синтаксиса требуется оператор. Выполнение пустого оператора не меняет состояния программы.
Составной оператор Действие составного оператора заключается в последовательном выполнении содержащихся в нем операторов, за исключением тех случаев, когда какой-либо оператор явно передает управление в другое место программы.
В начале составного оператора могут содержаться объявления. Они служат для определения переменных, локальных для данного блока, либо для распространения на данный блок области действия глобальных объектов.
Типично использование составного оператора в качестве тела другого оператора, например оператора if.
Оператор-выражение
Значение содержащегося в нем выражения никак не используется. Кроме того, он может быть записан лишь там, где по синтаксису допустим оператор.
Условный оператор if
Формат оператора:
if (выражение) оператор1; [else оператор2;]
Выполнение оператора if начинается с вычисления выражения.
Далее выполнение осуществляется по следующей схеме:
- если выражение истинно (т.е. отлично от 0), то выполняется оператор1.
- если выражение ложно (т.е. равно 0),то выполняется оператор2.
- если выражение ложно и отсутствует оператор2, то выполняется следующий за if оператор.
Допускается использование вложенных операторов if.
Оператор пошагового цикла for
Оператор for - это наиболее общий способ организации цикла. Он имеет следующий формат:
for ( выражение 1 ; выражение 2 ; выражение 3 ) тело;
Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.
Схема выполнения оператора for:
1. Вычисляется выражение 1.
2. Вычисляется выражение 2.
3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.
Другим вариантом использования оператора for является бесконечный цикл. Для организации такого цикла можно использовать пустое условное выражение, а для выхода из цикла обычно используют дополнительное условие и оператор break.
Оператор цикла с предусловием while
Оператор цикла while называется циклом с предусловием и имеет следующий формат:
while (выражение) тело;
Схема выполнения оператора while следующая:
1. Вычисляется выражение.
2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.
3. Процесс повторяется с пункта 1.
Оператор цикла с постусловием do while
Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий вид:
do тело while (выражение);
Схема выполнения оператора do while :
1. Выполняется тело цикла (которое может быть составным оператором).
2. Вычисляется выражение.
3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.
Оператор продолжения continue передает управление на следующую итерацию в операторах цикла do, for, while. Он может появиться только в теле этих операторов. Остающиеся в теле цикла операторы при этом не выполняются.
Оператор-переключатель switch
Синтаксис:
switch(<выражение>)
{
[<объявление>]
[case <константное-выражение>:] [<оператор>]
[case <константное-выражение>:] [<оператор>]
[default:] [<оператор>]
}
Оператор-переключатель switch предназначен для выбора одного из нескольких альтернативных путей выполнения программы. Выполнение оператора-переключателя начинается с вычисления значения выражения переключения (выражения, следующего за ключевым словом switch в круглых скобках). После этого управление передается одному из <операторов> тела переключателя. Оператор, следующий за ключевым словом default, выполняется, если ни одна из констант варианта не равна значению выражения переключения. Если же слово default опущено, то ни один оператор в теле переключателя не выполняется, и управление передается на оператор, следующий за переключателем в программе.
Оператор разрыва break прерывает выполнение операторов do, for, while или switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным.
Оператор перехода goto
Оператор перехода goto передает управление непосредственно на <оператор>, помеченный <меткой>. Метка представляет собой обычный идентификатор. Область действия метки ограничивается функцией, в которой она определена; из этого следует, во-первых, что каждая метка должна быть отлична от других меток в той же самой функции; во-вторых, что нельзя передать управление по оператору goto в другую функцию.
Помеченный оператор выполняется сразу после выполнения оператора goto. Нельзя с помощью оператора goto передать управление на конструкции case и default в теле переключателя.
Оператор возврата return заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова.