Каждая целая константа имеет тип, определяющий ее представление в памяти (описание типов приведено в разделе 3.1 "Базовые типы данных"). Десятичные константы могут иметь тип int(целый тип) или long(длинный целый тип).
Восьмеричные и шестнадцатеричные константы в зависимости от размера могут иметь тип int, unsigned int, longили unsigned long. Если константа может быть представлена типом int, то компилятор языка Си присваивает ей тип int. Если ее значение больше, чем максимальное положительное значение, которое может быть представлено типом int, но может быть представлено тем же числом битов, что и int, ей присваивается тип unsigned int. Наконец, константа, значение которой больше, чем максимальное значение, представляемое типом unsigned int, задается типом longили, если размер этого типа также оказывается недостаточен, типом unsigned long. В таблице 1.5 показаны диапазоны значений констант различных типов для компьютера, на котором тип intимеет длину 16 битов и тип longимеет длину 32 бита.
Таблица1.5.
Десятичные константы |
Восьмеричные константы |
Шестнадцатеричные константы |
Тип |
0—32767 |
0—077777 |
0х0—0x7FFF |
int |
|
0100000—0177777 |
0х8000—0xFFFF |
unsigned int |
32767—2147483647 |
02000001—017777777777 |
0х10000—0x7FFFFFFF |
long |
|
020000000000—030000000000 |
0х80000000—0xFFFFFFFF |
unsigned long |
Из рассмотренных правил следует, что при преобразовании восьмеричных и шестнадцатеричных констант к более длинным типам не производится расширения знака (поскольку старший, знаковый бит всегда равен нулю).
Программист может явно определить для любой целой константы тип long, записав букву " l" или " L" в конец константы. Это позволяет расширить нижнюю границу диапазона значений констант любого типа до нуля. Например, константа со значением 10 будет иметь тип longтолько в том случае, если она будет записана с суффиксом L, т. е. 10L. В таблице 1.6 приведены примеры длинных целых констант.
Таблица 1.6.
Десятичные константы |
Восьмеричные константы |
Шестнадцатеричные константы |
12L |
012L |
0xaL или 0xAL |
0l |
0115l |
0х4fl или 0x4Fl |
В СП ТС реализован также суффикс U(или u), означающий, что константа имеет тип unsigned. Можно использовать одновременно оба суффикса — Lи U— для одной и той же константы. Кроме того, в СП ТС константе присваивается тип unsigned long, если ее значение превышает 65535, независимо от наличия или отсутствия суффикса U(в СП MSC в этом случае константе был бы присвоен тип long).
Константы с плавающей точкой
Константа с плавающей точкой — это действительное десятичное положительное число. Оно включает целую часть, дробную часть и экспоненту. Константы с плавающей точкой имеют следующий формат представления:
[< цифры >][.< цифры >][< э >[-]< цифры >]
<���цифры> — одна или более десятичных цифр (от 0 до 9); < э > — признак экспоненты, задаваемый символом Еили е. Либо целая, либо дробная часть константы может быть опущена, но не обе сразу. Либо десятичная точка с дробной частью, либо экспонента может быть опущена, но не обе сразу.
Экспонента состоит из символа экспоненты, за которым следует целочисленное значение экспоненты, возможно со знаком плюс или минус.
Между цифрами или символами константы пробельные символы недопустимы.
Примеры констант с плавающей точкой:
15.75
1.575Е1
1575е-2
25.
Примеры констант с плавающей точкой с опущенной целой частью:
.75
.0075е2
Константы с плавающей точкой всегда специфицируют положительные значения. Если требуются отрицательные значения, то необходимо сформировать константное выражение и? знака минус и следующей за ним константы. Знак минус рассматривается при этом как арифметическая операция.
Примеры:
-0.0025
-2.5е-3
-.125
-.175Е-2
Все константы с плавающей точкой имеют тип double. В СП ТС можно явно присвоить константе тип float, добавив к ней суффикс fили F.
Символьная константа — это буква, цифра, знак пунктуации или специальный символ, заключенный в апострофы. Значение символьной константы равно коду представляемого ею символа. Символьная константа имеет следующую форму представления:
Читать дальше