Примеры
Пример
Пример
Простые объекты
Пример объявления объектов
int n; | /* | Переменная п целого типа. */ | ||
float xl; | /* | Переменная xl типа с плавающей | точкой. | */ |
char a; | /* | Переменная а символьного типа. | */ |
К простым объектам языка Си относятся константы и переменные.
Константа — это ограниченная последовательность символов алфавита языка (лексема), представляющая собой изображение фиксированного (неизменяемого) объекта.
Константы бывают следующие: 1) числовые, 2) символьные и 3) строковые.
Числовые константы делятся на целые и вещественые.
Целые константы
Виды целых констант показаны в табл. 2.1.
Таблица 1.1
Виды целых констант
Десятичные | Последовательность цифр (0 — 9), которая начинаются с цифры отличной от нуля. Пример: 1, -29, 385. Исключение здесь — число ноль 0 |
Восьмеричные | Последовательность цифр (0 — 7), которая всегда начинается с нуля. Пример: 00, 071, -052, -03 |
Шестнадцатиричные | Последовательность шестнадцатеричных цифр (0 — 9 и А — F), которой предшествует присутствует Ох. Пример: 0x0, 0x1, -0X2AF, 0X17 |
В зависимости от значения целой константы компилятор присваивает ей тот или иной тип (int, long, unsigned ini).
С помощью суффикса U (или и) можно представить целую константу в виде беззнакового целого.
50000U —константа типа unsigned int
Константе 50000U выделяются 2 байта вместо четырех, как было бы при отсутствии суффикса. В этом случае, т.е. для unsigned int, знаковый бит используется для представления одного из разрядов кода числа и диапазон значений становится от 0 до 65535.Суффикс L (или /) позволяет выделить целой константе 4 байта.
Совместное использование в любом порядке суффиксов U (или и)иЬ (или /) позволяет приписать целой константе тип unsigned long, и она займет в памяти 32 разряда, причем знаковый разряд будет использоваться для представления разряда кода (а не знака).
OLU — целая константа типа unsigned long длиной 4 байта
2424242424UL — константа типа unsigned long
Вещественные константы
Константа с плавающей точкой (вещественная константа) всегда представляется числом с плавающей точкой двойной точности, т. е. как имеющая тип double, и состоит из следующих частей [2]:
• целой части — последовательности цифр;
• десятичной точки;
• дробной части — последовательности цифр;
• символа экспоненты е или Е;
• экспоненты в виде целой константы (может быть со знаком).
• Любая часть (но не обе сразу) из нижеследующих пар может быть опущена:
• целая или дробная часть;
• десятичная точка или символ е (Е) и экспонента в виде целой константы.
345. |
3.14159 |
2.1Е5 |
.123ЕЗ |
4037е-5 |
По умолчанию компилятор присваевает вещественному числу тип double.
Если программиста не устраивает тип, который компилятор приписывает константе, то тип можно явно указать в записи константы с помощью следующих суффиксов: F (или/) —float для вещественных, U (или и) — unsigned для целых, L (или /) — long для целых и вещественных.
Примеры:
• 3.14159F — константа типа float, занимающая 4 байта;
• 3.14L — константа типа loung double, занимающая 10 байт.
Символьные константы
Символьная константа — это один символ или обратная косая черта и символ, заключенные в апострофы (одинарные кавычки), например: 'z', ' V, ' \t' и так далее. Обратная косая черта (слэш) и символ служат для обозначения управляющих символов, не имеющих графического представления, например, '\п' — переход на новую строку, '\t' — табуляция. Все символьные константы имеют тип char и занимают в памяти по 1 байту. Значением символьной константы является числовое значение её внутреннего кода.
Строковые константы
Строковая константа — это последовательность символов, заключенная в кавычки, например: "Это строковая константа". Кавычки не входят в строку, а лишь ограничивают её. Технически, строковая константа представляет собой массив символов и по этому признаку может быть отнесена к разряду сложных объектов языка Си. Однако, строковую константу удобнее рассмотреть вместе с другими константами.
В конце каждой строковой константы компилятор помещает символ '\0', чтобы программе было возможно определить конец строки. Такое представление означает, что размер строковой константы не ограничен каким-либо пределом, но для определения длины строковой константы её нужно полностью просмотреть.
Поскольку строковая константа состоит из символов, то она имеет тип char. Количество ячеек памяти, необходимое для хранения строковой константы на единицу больше количества символов в ней. Следует отчетливо понимать, что символьная константа и строка из одного символа не одно и то же: Y не есть "х". Первое — это символ, использованный для числового представления буквы х, а второе — строковая константа, содержащая символ х и '\0'. Если в программе строковые константы записаны одна за другой через разделители, то при выполнении программы они будут «склеены».
Переменные
Переменная — лексема, представляющая собой изображение изменяемого объекта.
С технической точки зрения, переменная — это область памяти, в которую могут помещаться различные числа (двоичные коды). Любая переменная до её использования в программе должна быть описана, т. е. для нее должены быть указаны тип и имя (идентификатор).