 |
enum team (* giants, cubs=3, dodgers = giants + 1 *);
константы установлены следующим образом:
giants = 0, cubs = 3, dodgers = 1
Значения констант не обязаны быть уникальными:
enum team (* giants, cubs = 1, dodgers = cubs - 1 *);
Допустимы также отрицательные инициализаторы.
Строковые литералы
- 20 -
Строковые литералы, известные также как строковые конс-
танты, образуют специальную категорию констант, используемых
для работы с фиксированными последовательностями символов.
Строковый литерал имееттип данных array ofchar и класспамя-
тиstatic, и записываетсякак последовательность произвольного
количества символов, заключенных в двойные кавычки:
"Это строковый литерал!"
Нулевая (пустая) строка записывается как "".
Символы внутри двойных кавычек могут включатьуправляю-
щие последовательности (см. стр. 13 оригинала). Например,
данный код,
"\t\t\"Имя \"\\\tАдрес\n\n"
распечатается следующим образом:
"Имя "\ Адрес
Слову "Имя " будет предшествовать два символа табуля-
ции; слову Адрес предшествуетодин символтабуляции. Строка
заканчиваетсядвумя символами новой строки. Последователь-
ность \" обеспечивает вывод внутренних кавычек.
Строка литерала хранится в памяти как заданная последо-
вательность символов,плюс конечный пустой символ ('\0'). Ну-
левая строка хранится в виде одного символа '\0'.
На фазе лексического анализа соседние строковые
литералы, разделенные толькопробелами, конкатенируются. В
следующем примере,
#include
main()
(*
char *p;
p = "Это пример того, как Turbo C++"
" автоматически\nвыполняет для вас конкатенацию"
" очень длинных строк,\nчто позволяет получить"
" более красивые программы.";
printf(*p*);
*)
На выходе программы будет:
Это пример того, как Turbo C++ автоматически
выполняет для вас конкатенацию очень длинных строк,
что позволяет получить более красивые программы.
Для расширения строковой константы за границы строки в
качестве символа продолжения можно использовать обратную
наклонную черту (\):
put("В действительности \
это однострочная строка символов");
Константы и их внутреннее представление
ANSI C говорит о том, что размер и численный диапазон
базовых типовданных( и различных их модификаций) зависят от
конкретной реализации компилятора и в целом от архитектуры
компьютера, на котором он установлен. Базовыми компьютерами
дляTurbo C++ являются компьютеры семействаIBM PC (и совмес-
тимые с ними), поэтому выбор внутреннего представления раз-
- 21 -
личных типов данных в целом определяется архитектурой мик-
ропроцессоров 8088 и 80x86. В следующей таблице сведены
размеры и соответствующие диапазоны значений для типов дан-
ных, определяемых в Turbo C++. Дополнительную информацию об
этих типах данных см. на стр. 39 оригинала. Внутреннее
представление типов данных см. на рис.1.
Типы данных, размеры и диапазоны значений Таблица 1.9
-----------------------------------------------------------
Тип Размер Диапазон Примеры применения
-----------------------------------------------------------
unsigned char8 0 до 255 Малые числа и полный
набор символов PC
char8 -128 до 127 Самые малые числа и
ASCII-символы
enum 16 -32,768 до 32,767 Упорядоченные наборы
значений
unsigned int 16 0 до 65,535 Большие числа и циклы
short int 16 -32,768 до 32,767 Счетчики, малые числа,
управление циклами
int 16 -32,768 до 32,767 Счетчики, малые числа,
управление циклами
unsigned long 32 0 до 4,294,967,295 Астрономические
расстояния
long 32 -2,147,483,648 до 2,147,483,647
Большие числа, население
-38 38
float 32 3.4 x 10 до 3.4 x 10
Научные расчеты (точность
7 разрядов)
-308 308
double 64 1.7 x 10 до 1.7 x 10
Научные расчеты (точность
15 разрядов)
-4932 4932
long double 80 3.4 x 10 до 1.1 x 10
Финансовые расчеты
(точность 19 знаков)
near pointer 16 Не существует Манипулирование адресами
памяти
far pointer 32 Не существует Манипулирование адресами
памяти вне текущего
сегмента
-----------------------------------------------------------
<------- направление возрастания значимости
------------
int \!s\!значение\! (дополнение до 2)
------------
15 0
----------------------
long int \!s\!значение \! (дополнение до 2)
----------------------
- 22 -
31 0
----------------------
\! \!смещенный\!мантисса\!
float \!s\!порядок \! \!
----------------------
31 0
--------------------------------
\! \! смещенный \! мантисса \!
double \!s\! порядок \! \!
--------------------------------
63 0
----------------------------------------
\! \! смещенный \! \! мантисса \!
long double \!s\! порядок \! \! \!
----------------------------------------
79 0
s = знаковый бит (0 = положит, 1 = отрицат)
= позиция неявной двоичной точки
1 = целочисленный бит мантиссы:
записывается в long double
неявно (всегда 1) в float, double
Смещенный порядок (нормализованные значения):
float:127 (7FH)
double:1023 (3FFH)
long double: 16,383 (3FFFH)
Рис.1.1 Внутренние представления типов данных
Выражения с константами
Выражение с константами это выражение, вычисление кото-
рого даетв результате константу (причем лежащую в диапазоне,
определенном для констант данного типа). Вычисление выраже-
ний с константами выполняется так же, как и обычных выраже-
ний. Выражения с константами можно использовать везде, где-
допускается использование самих констант. Синтаксис
выражений сконстантами следующий:
выражение-с-константами:
 |
|