3.14159
.2
4е16
.8Е-5
100.
Использовать пробелы при записи констант запрещается
1.56Е+ 12 - НЕПРАВИЛЬНО
В процессе обработки константы с плавающей точкой рассматриваются в формате с удвоенной точностью. Предположим, например, что переменная some типа float получает свое значение в результате выполнения оператора
some = 4.0*2.0;
В этом случае константы 4.0 и 2.0 размещаются в памяти как данные типа double, т. е. для каждой из них (обычно) отводится 64 бит. Их произведение (равное 8) вычисляется с помощью операции умножения, выполняемой с двойной точностью, и только после этого производится усечение результата до нормального размера, соответствующего типу float. Все это обеспечивает максимальную точность ваших вычислений.
Переполнение и потеря значимости при обработке чисел с плавающей точкой
floatРезюме: основные типы данных
Ключевые словаДанные основных типов вводятся в программу при помощи следующих семи ключевых слов: int, long, short, unsigned, char, float, double.
Целые числа со знаком
int: основной целый тип, используемый в вычислительной системе;
long или long int: может содержать целое значение, не меньшее максимальной величины, допускаемой типом int, или даже большее;
short или short int: максимальное целое число типа short не больше, чем максимальное целое число типа int, а может быть, и меньше. Обычно числа типа long бывают больше чисел типа short, а тип int реализуется как один из двух указанных типов. Например, компилятор Lattice С на IBM PC под данные типов short и int отводит
16 бит, а под данные типа long - 32 бита. Все зависит от конкретной системы.
Целые числа без знака
unsignedunsigned intunsigned longunsigned shortunsignedunsigned intСимволы
Char: ключевое слово, используемое для указания данных этого типа.
Данные этих типов могут принимать положительные и отрицательные значения.
float: основной тип данных с плавающей точкой в системе;
1. Выбрать требуемый тип данных.
2. Выбрать имя для переменной.
3. Для оператора описания использовать нижеследующий формат:
спецификация-типа имя-переменной;
Спецификация-типа формируется из одного или более ключевых слов.
Вот несколько примеров:
int erest;
unsigned short cash;
4. Вы можете описать в одном операторе несколько переменных одного типа, разделяя их имена запятыми:
char ch, unit, ans;
5. В операторе описания вы имеете возможность инициализировать переменную:
float mass = 6.0E24;
Другие типы
В языке Си имеются и другие типы данных, построенные с использованием основных типов. Они включают в себя массивы, указатели, структуры и объединения. Хотя эти типы являются пред метом рассмотрения последующих глав, мы, не подозревая об этом, уже применили указатели в примерах, приведенных в данной главе. [Указатели используются функцией 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, которая позволяет определить размер объектов в байтах.
Мы определили размеры данных только четырех типов, но вы легко можете модифицировать эту программу и найти размер объекта любого другого интересующего вас типа.
ИСПОЛЬЗОВАНИЕ ТИПОВ ДАННЫХ
intfloatcharint apples = 3; /* ПРАВИЛЬНО */
int oranges = 3.0; /* НЕПРАВИЛЬНО */
Язык Си "рассматривает" такие несоответствия менее жестко, чем, скажем, Паскаль, но в любом случае лучше учиться избегать дурных привычек.
ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ
Что такое основные типы данных языка Си: int, short, long, unsigned, char, float, double.
Как описать переменную любого типа: int beancount, float root-beer; и т. д.
Как зависать константу типа int: 256, 023, OXF5 и т. д.
Как записать константу типа char: 'r', 'U', '\007', '?' и т. д.
Как записать константу типа float: 14,92, 1.67е-27 и т. д.
Что такое слова байты и биты.
В каких случаях используются различные типы данных.
ВОПРОСЫ И ОТВЕТЫ
Вопросы
а. Население Рио Фрито
б. Средний вес картины Рембрандта
в. Наиболее часто встречающаяся буква в тексте данной главы
г. Сколько раз указанная буква встречается в тексте
2. Определите тип и смысл (если он есть) каждой из следующих констант
а. '\b'
б. 1066
в. 99 44