Язык Си | страница 36
В языке Си имеются и другие типы данных, построенные с использованием основных типов. Они включают в себя массивы, указатели, структуры и объединения. Хотя эти типы являются пред метом рассмотрения последующих глав, мы, не подозревая об этом, уже применили указатели в примерах, приведенных в данной главе. [Указатели используются функцией scanf( ); признаком этого в данном случае служит префикс &.]
Приведем таблицу размеров данных для некоторых распространенных вычислительных систем.
Таблица 3.1.Представление типов данных в некоторых известных вычислительных системах
| Размер слова | DEC PDP-11 16 бит | DEC VAX 32 бита | Interdata 8/3 32 бита | IBM PC (Lattice C) 16 бит | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| char | 8 | 8 | 8 | 8 | ||||||||||||||||||||
| int | 16 | 32 | 32 | 16 | ||||||||||||||||||||
| short | 16 | 16 | 16 | 16 | ||||||||||||||||||||
| long | 32 | 32 | 32 | 32 | ||||||||||||||||||||
| float | 32 | 32 | 32 | 32 | ||||||||||||||||||||
| double | 64 | 64 | 64 | 64 | ||||||||||||||||||||
| Диапазон порядка | ±38 | ±38 | ±76 | -307 + 308 (double) |
Как обстоит дело на вашей машине? Попробуйте выполнить нижеследующую программу:
main( )
{
printf(" Данные типа int занимают %d байта. \n", sizeof (int));
printf(" Данные типа char занимают %d байт.\n", sizeof (char));
printf(" Данные типа long занимают %d байта.\n", sizeof (long));
printf(" Данные типа double занимают %d байт.\n", sizeof (double));
}
В языке Си имеется встроенная операция sizeof, которая позволяет определить размер объектов в байтах.
Мы определили размеры данных только четырех типов, но вы легко можете модифицировать эту программу и найти размер объекта любого другого интересующего вас типа.
ИСПОЛЬЗОВАНИЕ ТИПОВ ДАННЫХ
Во время разработки программы вам необходимо составить список требуемых переменных и указать при этом, какого они должны быть типа. Скорее всего вы будете использовать тип int или, возможно, float для определения чисел и тип char для символов. Описывайте эти данные в самом начале тела функции, в которой они используются. Имена переменных выбирайте таким образом, чтобы они указывали на их смысл. При инициализации переменной следите за тем, чтобы тип константы соответствовал типу переменной.
int apples = 3; /* ПРАВИЛЬНО */
int oranges = 3.0; /* НЕПРАВИЛЬНО */
Язык Си "рассматривает" такие несоответствия менее жестко, чем, скажем, Паскаль, но в любом случае лучше учиться избегать дурных привычек.
ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ
В данной главе мы рассмотрели довольно большой материал. Суммируя его, мы обратим основное внимание на практическую сторону тех вопросов, которые здесь обсудили. Так же как и в предыдущей главе, мы дадим краткие примеры. Ниже приводится сводка тех фактов, которые вы должны были узнать из этой главы.