Структура программы языка си
Разработанный в начале 1970-х годов сотрудниками компании Bell Labs: Денис Ритчи и Брайан Керниган специально для разработки операционной системы Unix.
1.1. Алфавит языка Си включает:
- буквы: строчные, прописные буквы латинского алфавита (a...z, A...Z) и символ подчеркивания _ (строчные и прописные буквы различаются)
- цифры (0...9)
- специальные знаки: . , ; + - * / = < > % & ! ( ) { } ^ | ? : [ ] ^ ~' " # \
- ключевые слова: char, short, int, long, float, double, enum, struct, union, signed, unsigned, void, auto, extern, register, static, break, case, continue, default, do, else, for, goto, if, return, switch, while, sizeof, typedef.
Ключевые слова— это слова, используемые компилятором, по ним он распознает операторы и другие конструкции языка. Их нельзя использовать в программе в другом качестве.
Простейшей конструкцией является идентификатор. Идентификатор — это последовательность букв латинского алфавита (включая символ подчеркивания) и цифр, которая обязательно начинается с буквы. Идентификаторы используются как имена переменных, функций и типов данных. Идентификатор может быть произвольной длины, но в некоторых ЭВМ не все символы учитываются компилятором и загрузчиком.
Примеры идентификаторов.
Lab1, example_1, lab_12, count, temp.
Идентификаторы: lab1 и Lab1 – это два разных имени.
Описательные (наглядные) имена программных объектов (имена переменных, функций и типов данных) могут значительно улучшить понятность вашей программы и облегчить процесс отладки и модификации программы. Короткие имена переменных не ускорят выполнение программы.
Простые типы данных языка Си
Переменной выделяется ячейка оперативной памяти. В этой ячейке хранится значение. Доступ к значению ячейки по имени переменной. Размер ячейки определяет тип переменной.
Тип определяет:
- Размер выделяемой ячейки памяти.
- Формат внутреннего представления значения.
- Набор операций над значениями этого типа.
- Способы изображения констант этого типа.
Простые типы языка С.
Целый тип – определяет множество целых чисел.
Для определения переменных, которые хранят целые числа, используются:
Имя типа | Объем памяти (байт) | Внутреннее представление | Диапазон значений |
int | Целое со знаком | -231××××231-1 | |
short | Целое со знаком | -215××××215-1 | |
long | Целое со знаком | -231××××231-1 | |
char | Целое со знаком | -27××××27-1 | |
unsigned int | Целое без знака | 0××××232-1 | |
unsigned short | Целое без знака | 0××××216-1 | |
unsigned long | Целое без знака | 0×××232-1 | |
unsigned char | Целое без знака | 0×××28-1 |
Пример определения переменных.
int a, b=-3, c=4;
short x=-2;
char y=65, y1=’A’;
unsigned int z=123;
Переменным a, b, c будут выделены ячейки размером 4 байта. Переменной x будет выделена ячейка размером 2 байта, переменной y выделяется ячейка размером 1 байт и хранит код символа, переменной y1 выделяется ячейка размером 1 байт и тоже для хранения символьного значения (кода символа), переменной z выделяется ячейка размером 4 байта и хранит значение в формате без знака.
4.1. Изображение констант целого типа
- в десятичной системе счисления
-123 123 78
- в восьмеричной системе счисления (константе предшествует цифра нуль)
057 0347 -078
- в шестнадцатеричной системе счисления (константе предшествует цифра нуль и символ х)
0хА7 0ХАА 0хFF
По виду константы компилятор определяет ее тип, т.е. размер ячейки.
Примеры констант и их тип.
Константа 123 входит в диапазон типа unsigned char, поэтому ее тип unsigned char, константа 0хFFFF занимает в памяти 2 байта, без знака, значит ее тип unsigned short.
Чтобы явно указать в программе тип константы используют следующее правило: справа от значения приписывают суффикс:
5l – 5 в формате long
78L – 78 в формате long
897UL – в формате unsigned long
897ul – в формате unsigned long
Самостоятельно. Определите системы счисления, в которых изображены константы и тип константы 128L, 0105L, OX2A11L.
Операции над значениями целого типа.
1) Арифметические: +, -, *, /, %. Это бинарные операции, т.е. над двумя операндами. Операнды целого типа. Результат операций число целое.
Примеры операций.
5+2 = 7; 5-2=3; 5*2=10; 5/2=2; 5%2=1 (остаток от деления)
2) Сравнение: >, <, <=, >=, = =, !=.
3) Логические: && (И), ||(ИЛИ), ! (НЕ). В языке С значение Истина –это целые числа отличные от нуля; Ложь – это 0.
4) Поразрядные операции: &, |, ~, <<, >>.
Вещественный тип данных
Используется для определения переменных, значениями которых должны быть дробные числа.
Таблица вещественных типов
Имя типа | Объем памяти | Внутреннее представление | Размер мантиссы | Размер порядка | Диапазон и точность |
float | 4 байта (32 бита) | С плавающей точкой | 23 бита – мантисса; 1 бит – знак. | 8 бит – порядок; | ±3.4Е±38 Точность до 7 знаков после запятой |
Double (с двойной точностью) | 8 байт (64 бита) | С плавающей точкой | 52 бита – мантисса 1 бит – знак | 11 бит – порядок | ±1.7Е±308 Точность до 17 знаков после запятой |
Long double | 8 байт (64 бита) | С плавающей точкой | ±3,4E±4932 |