Struct switch tupedef union unsigned void volatile while
По смысловой нагрузке служебные слова группируются следующим образом
Для обозначения типов данных используются спецификации типов и квалификаторы типов.
К спецификаторам типов относятся:
char - символьный;
double - вещественный двойной точности с плавающей точкой;
enum - перечисляемый тип (перечисление) – определение целочисленных констант, для каждой из которых вводятся имя и значение;
fload - вещественный с плавающей точкой;
int - целый;
long - целый увеличенной длины (длинное целое);
short - целый уменьшенной длины (короткое целое);
struct - структура (структурный тип);
signed - знаковый, т.е. целое со знаком (старший юит считается знаковым);
union - объединение (объединяющий) тип;
unsigned - беззнаковый, т.е. целое без знака (старший бит не считается знаковым);
void - отсутствие значения;
typedef - вводит синоним обозначения типа (определяет сокращенное наименование для обозначения типа).
Квалификаторы типа:
const - квалификатор объекта, имеющего постоянное значение, т.е. доступного только для чтения;
volatile - квалификатор объекта, значение которого может измениться без явных указаний программиста.
Квалификаторы типа информируют компилятор о необходимости и (или) возможности особой обработки объектов в процессе оптимизации кода программы.
Для обозначения классов памяти используются:
auto - автоматический;
extern - внешний;
register - регистровый;
static - статический.
Для построения операторов используются служебные слова:
break - выйти из цикла или переключателя;
continue - завершить текущую итерацию цикла (продолжить цикл, перейдя к следующей итерации);
do - выполнить (заголовок оператора цикла с постусловием);
for - для (заголовок оператора параметрического цикла);
goto - перейти (безусловный переход);
if - если – обозначение условного оператора;
return - возврат (из функции);
switch - переключатель;
while - пока (заголовок цикла с предусловием или завершение цикла do).
К служебным словам также отнесены следующие идентификаторы:
default - определяет (действие при отсутствии нужного варианта в операторе switch);
case - определяет вариант в операторе switch;
else - входит в оператор if, определяя альтернативную ветвь;
sizeof - операция определения размера операнда (в байтах).
В число служебных слов, определенных стандартом языка, модификаторы не входят, однако их необходимо знать, работая с конкретной реализацией языка. Практически во всех шестнадцатиразрядных реализациях компиляторов для IBM PC используются следующие модификаторы:
_asm, cdecl, _cs, _ds, _es, far, fortran, huge, interrupt, near, pascal, _ss.
Ключевые слова far, huge, near позволяют определить размеры указателей на области памяти. Ключевые слова _asm, cdelc, fortran, pascalслужат для организации связи с функциями, написанными на других языках, а также для использования команд языка ассемблера непосредственно в теле разрабатываемой программы на языке СИ.
Идентификаторы, начинающиеся с одного или двух символов подчеркивания, зарезервированы для использования в библиотеках и компиляторах. Рекомендуется при программировании имена констант записывать целиком заглавными буквами.
5.1.2. Константы и строки
По определению константа представляет значение, которое не может быть изменено. Синтаксис определяет пять типов констант:
- символы;
- константы перечисляемого типа;
- вещественные числа;
- целые числа;
- нулевой указатель.
5.1.3. Символы, или символьные константы
Для отображения отдельных знаков, имеющих индивидуальные внутренне коды, используются символьные константы. Каждая символьная константа – это лексема, которая состоит из изображения символа и ограничивающих апострофов. Например: ‘A’. ‘a’, ‘B’, ‘+’ и т.д.
Внутри апострофов можно записать любой символ, изображаемый на дисплее или принтере в текстовом режиме. Однако в ЭВМ используются и коды, не имеющие графического представления на экране дисплея, клавиатуре или принтере. Примерами таких кодов служит код перехода курсора дисплея на новую строку или код возврата каретки (возврат курсора к началу текущей строки). Для изображения в программе соответствующих символьных констант используются комбинации из нескольких символов, имеющих графическое представление. Каждая такая комбинация начинается с символа ‘\’.
Управляющая последовательность | Наименование | Шестнадцатеричная замена |
\a | Звонок | |
\b | Возврат на шаг | |
\t | Горизонтальная табуляция | |
\n | Переход на новую строку | 00A |
\v | Вертикальная табуляция | 00B |
\r | Возврат каретки | 00C |
\f | Перевод формата | 00D |
\" | Кавычки | |
\' | Апостроф | |
\0 | Ноль-символ | |
\\ | Обратная дробная черта | 05C |
\ddd | Символ набора кодов ПЭВМ в восьмеричном представлении | |
\xddd | Символ набора кодов ПЭВМ в шестнадцатеричном представлении |
5.1.4. Целые константы
Синтаксисом языка определены целые константы: десятичные, шестнадцатеричные и восьмеричные. Основание определяется префиксом в записи константы. Для десятичных констант префикс не используется. Десятичные целые определены как последовательность десятичных цифр, начинающиеся не с нуля (если это не число нуль).
44 684 0 1025
Последовательность цифр, начинающаяся с 0 и не содержащая десятичных цифр старше 7, воспринимается как восьмеричная константа:
016 – восьмеричное представление десятичного целого 14.
Последовательность шестнадцатеричных цифр (0, 1…,9 А…F), перед которой записаны символы 0х или 0Х, считается шестнадцатеричной константой:
0х16 – шестнадцатеричное представление десятичного целого 22;
0XFF – шестнадцатеричное представление десятичного целого 255.
5.1.5. Вещественные константы
Для представления вещественных (нецелых) чисел используются константы, представляемые в памяти ЭВМ в форме с плавающей точкой. Каждая вещественная константа состоит из следующих частей: целая часть (десятичная целая константа); десятичная точка; дробная часть (десятичная целая константа); признак показателя «е» или «Е»; показатель десятичной степени (десятичная целая константа, возможно, со знаком). При записи констант с плавающей точкой могут опускаться целая или дробная часть (но не одновременно); десятичная точка или символ экспоненты с показателем степени (но не одновременно).
44 3.14159 44e0 .314159E1 0.0
5.1.6. Предельные значения и типы арифметических констант
Машинное представление (код) программы на языке Си предполагает, что каждая константа, введенная в программе, занимает в ЭВМ некоторый участок памяти. Размеры этого участка памяти и интерпретация его содержимого определяются типом соответствующей константы.
Предельные значения определяются набором констант, названия (имена) которых стандартизированы и не зависят от реализаций. В таблице приводятся обозначения констант и их минимальные (по абсолютной величине допустимые стандартом ANSI значения). В конкретных реализациях абсолютные значения констант могут превышать значения, приведенные в таблице.
Таблица 1. Абсолютные значения констант
Имя константы | Значения | Смысл |
CHAR_BIT | Число битов в байте | |
SCHAR_MIN | -128 | Минимальное значение signed char |
SCHAR_MAX | Максимальное значение signed char | |
UNCHAR_MAX | Максимальное значение unsigned char | |
CHAR_MIN | ‘0’ | Минимальное значение для char |
Для целых и вещественных констант каждая реализация компилятора с языка Си может определять свои ограничения. В таблице приведены возможные пределы изменения этих значений
Диапазоны значений констант | Тип данных | ||
десятичные | восьмеричные | шестнадцатеричные | |
от 0 до 32767 | от 00 до 077777 | от 0х0000 до 0x7FFF | int |
- | от 0100000 до 0177777 | от 0x800 до 0xFFFF | unsigned int |
от 32768 до 2147483647 | от 020000 до 017777777777 | от 0x100000 до 0х7FFFFFFF | long |
от 2147483648 до 4294967295 | от 020000000000 до 037777777777 | от 0x80000000 до 0xFFFFFFFF | unsigned long |
> 429496295 | > 037777777777 | > 0xFFFFFFFF | ошибка |
Данные вещественных типов
Тип данных | Размер, бит | Диапазон абсолютных величин |
float | от 3.4E-38 до 3.4E+38 | |
double | от 1.7E-308 до 1.7E+308 | |
long double | от 3.4E-4932 до 1.1E+4932 |
Вещественная константа 3.141592653589793 будет воспринята как имеющая тип double, и ей будет выделено 8 байт. Тот же тип выбирается для константы 3.14, так как по умолчанию всем вещественным константам присваивается тип double.
Если программиста не устраивает тип, который компилятор приписывает константе, то тип можно явно указать в записи константы с помощью суффиксов F или f – floatдля вещественных, U (или u) unsigned (для целых); L (или l) – long (для целых и вещественных).
Например:
3.14159F - константа типа float(выделяется 4 байта);
3/14L - константа типа long double (выделяется 10 байт).