- •Вопрос 1
- •Вопрос 2
- •2.4. Константы
- •2.4.1. Целые константы
- •2.4.2. Длинные целые константы
- •2.4.3. Символьные константы
- •2.4.4. Вещественные константы
- •2.4.5. Перечислимые константы
- •2.5. Текстовые константы
- •Вопрос 3
- •2.2. Идентификаторы (имена)
- •2.3. Ключевые слова
- •3.2. Тип
- •Вопрос 4
- •2.3. Данные целого типа
- •Вопрос 5
- •Вопрос 6
- •11.1. Представление символьной строки при помощи одномерного массива
- •11.2. Указатель на символьную строку
- •11.3. Ввод/вывод символьных строк
- •11.4. Массивы символьных строк
- •11.5. Функции работы состроками
- •Вопрос 7
- •3.1. Операции
- •3.1.1. Арифметические операции
- •5.2. Унарные операции
- •5.5. Операции сдвига
- •5.6. Операции отношения
- •5.7. Операции равенства
- •5.8. Побитная операция и
- •5.13. Условная операция
- •3.1.2. Операция присваивания
- •Вопрос 8
- •7.3. Условный оператор if
- •7.7. Оператор выбора switch
- •7.8. Оператор break
- •7.9. Оператор continue
- •7.10. Оператор возврата return
- •6.1.2. Формы оператора if
- •6.1.3. Оператор выбора switch
- •Вопрос 9
- •7.4. Оператор цилка while
- •7.5. Оператор цикла do
- •7.6. Оператор цикла for
- •6.2.1. Оператор while
- •6.2.2. Оператор for
- •6.2.3. Оператор do-while
- •6.3.4. Применение оператора goto и меток
- •Вопрос 11
- •5.2.1. Основные форматы
- •5.2.2. Модификации форматов
- •5.3. Функция форматированного ввода scanf()
- •Вопрос 12
- •12. Работа с файлами в языке c. Функции работы с файлами. Буферизованный ввод-вывод.
- •Вопрос 13
- •1.6.2. Объявления функций
- •1.6.3. Время жизни и область видимости программных объектов
- •1.6.4. Инициализация глобальных и локальных переменных
- •Вопрос 14
- •Вопрос 15
- •Вопрос 16
- •Вопрос 17
- •Вопрос 18
- •Вопрос 19
- •Вопрос 20
2.2. Идентификаторы (имена)
Идентификатор - это последовательность букв и цифр. Первый символ должен быть буквой. Подчеркивание (_) считается буквой. Прописные и строчные буквы различаются. Ограничение на длину имени отсутствует. Реализации могут игнорировать различия в размерах букв внешних имен, ограничивать число значащих символов как для внешних, так и для локальных имен.
2.3. Ключевые слова
Следующие идентификаторы зарезервированы для использования в качестве ключевых слов и не могут использоваться в другом смысле:
asm default float register switch
auto do for return typedef
break double goto short union
case else if sizeof unsigned
char enum int static void
continue extern long struct while
Некоторые реализации резервируют также слово fortran.
3.2. Тип
Язык C поддерживает несколько базовых типов объектов. Объекты, описанные как символы (char), занимают место достаточное, чтобы поместить в него любое значение из используемой кодировки символов. Если в переменную типа char заносится настоящий символ из данной кодировки, ее значение равно численному значению символа. В символьные переменные можно помещать и другие величины, но реализация этого машинно-зависима. В частности, char по умолчанию может быть знаковым или беззнаковым. В данной реализации символы по умолчанию знаковые.
Доступно до трех возможных размеров целых чисел, которые описываются при помощи ключевых слов short int, int и long int. Более длинные целые предоставляют не меньше места, чем более короткие, однако в некоторых реализациях короткие или длинные целые, либо и те и другие, эквивалентны обычным целым. Обычные целые имеют размер, наиболее естественный для архитектуры конкретного компьютера. Другие размеры предоставляются, чтобы удовлетворить специфические потребности. Размеры базовых типов для процессоров MC68020/30 показаны в таблице:
68020/30 | |
char |
8 бит |
int |
32 |
short |
16 |
long |
32 |
float |
32 |
double |
64 |
Свойства типов enum (см. Описания перечислимых типов в разделе ОПИСАНИЯ) тождественны свойствам некоторых целых типов. Реализация компилятора может использовать информацию о диапазоне значений, чтобы определить, сколько выделять памяти.
Беззнаковые целые, описанные как unsigned, подчиняются законам арифметики по модулю (2n), где n - число бит в их представлении.
Для вещественных чисел обычная (float) и двойная (double) точности могут в некоторых реализациях совпасть.
Поскольку объекты перечисленных выше типов можно с успехом интерпретировать как числа, будем далее относить их к арифметическим типам. char, int всех размеров (со знаком или без), а также enum будут собирательно называться целочисленными типами. Типы float и double будут собирательно называться вещественными типами.
Тип void задает пустое множество значений. Он используется для обозначения типа функций, не возвращающих значения.
Кроме базовых арифметических типов имеется потенциально бесконечный класс производных типов, построенных из базовых типов с помощью следующих конструкторов:
Массивы объектов большинства типов.
Функции, возвращающие объекты данного типа.
Указатели на объекты данного типа.
Структуры, которые содержат в себе последовательность объектов различных типов.
Объединения, которые могут содержать в себе один из нескольких объектов различных типов.
В общем случае перечисленные методы конструирования типов могут применяться рекурсивно.
. Объявление переменных
Одним из отличий языка C от ряда других языков программирования является отсутствие принципа умолчания, что приводит к необходимости явного объявления всех переменных, используемых в программе, вместе с указанием соответствующих им типов.
Объявление переменной имеет следующий формат:
[спецификатор_класса_памяти] спецификатор_типа идентификатор [=инициатор].
Спецификатор класса памяти определяется одним из 4 ключевых слов языка C: auto,extern,register,static и указывает, во-первых, каким образом будет распределяться память под объявляемую переменную и, во-вторых, область видимости этой переменной, т. е. из каких частей программы можно к ней обратиться.
Спецификатор типа -одно или несколько ключевых слов, определяющих тип объявляемой переменной.
Инициатор задает начальное значение или список начальных значений, присваиваемых переменной при объявлении.
Примеры инициализации переменных:
int i=5; float f=12.35; char ch='a';
int k=0, b=5, d=7;
Переменная любого типа может быть объявлена немодифицируемой, что достигается добавлением ключевого слова const к спецификатору типа. Объекты с типом const представляют собой данные, используемые только для чтения, т. е. этой переменной не может быть присвоено новое значение: например, const int a=5.
Отметим, что если после слова const отсутствует спецификатор типа, то подразумевается спецификатор типа int. Если ключевое слово const стоит перед объявлением составных типов (массив, структура, объединение), то это приводит к тому, что каждый элемент также должен являться немодифицируемым, т. е. значение ему может быть присвоено только один раз.
Ключевое слово void означает отсутствие типа.