Язык Си в примерах/Скалярные типы
Числовые типы
[править]Список числовых типов, определяемых стандартом, следующий (некоторые из этих типов могут иметь более одного стандартного названия; приведены кратчайшие):[1][2]
- целочисленные:
_Bool
— логическая величина (0 или 1), не менее одного бита;signed char
— байт, не менее 8 бит;short
— короткое целое, не менее 16 бит;int
— целое, не менее 16 бит;long
— длинное целое, не менее 32 бит;long long
— длинное длинное целое, не менее 64 бит;
- с плавающей запятой:
float
— диапазон: не хуже 10⁻³⁷ … 10⁺³⁷, εмаш < 10⁻⁵;double
,long double
— диапазон: не хуже 10⁻³⁷ … 10⁺³⁷, εмаш < 10⁻⁹;
- комплексные:
float _Complex
,double _Complex
,long double _Complex
— диапазон и εмаш действительной и мнимой частей совпадают с таковыми для соответствующих чисел с плавающей запятой.
В случае, если используемая система реализует стандарт IEC 60559 на числа с плавающей запятой, типы с плавающей запятой имеют следующие параметры:
float
— соответствует представлению «одинарной точности» IEC 60559; диапазон: 1,18 × 10⁻³⁸ … 3,40 × 10⁺³⁸, εмаш = 1.19 × 10⁻⁷;double
— «двойная точность» IEC 60559; диапазон: 2,225 × 10⁻³⁰⁸ … 1.80 × 10⁺³⁰⁸, εмаш = 2.22 × 10⁻¹⁶;long double
— «четверная точность» IEC 60559; диапазон: 3,36 × 10⁻⁴⁹³² … 1,19 × 10⁺⁴⁹³², εмаш = 1.08 × 10⁻¹⁹.
Кроме того, из целочисленных типов могут быть образованы беззнаковые («неотрицательные») добавлением unsigned
перед именем типа. (Исключение: signed char
переходит в unsigned char
.)
При преобразовании между текстовым (строковым) представлением и этими типами, используются, в частности, следующие указатели преобразований, состоящие из знака %
, указателя разрядности, и указателя представления.
- Указатели представлений
-
- Целые числа
-
d
,i
— десятичная запись со знаком (42);u
— десятичная запись без знака (42);o
— восьмеричная запись (52);x
,X
— шестнадцатеричная запись (2a, 2A).
- Числа с плавающей запятой
-
f
— десятичная запись (1000000.000000);e
,E
— десятичная E-запись (1.000000e+06, 1.000000E+06);g
— «автоматический» выбор междуe
иf
;a
,A
— шестнадцатеричная запись (0xf.4240p4, 0XF.4240P4).
- Указатели разрядности
-
- Целые числа
-
hh
— для типовsigned char
иunsigned char
;h
— для типовshort
иunsigned short
;- (пустая строка) — для типов
int
иunsigned int
l
— для типовlong
иunsigned long
;ll
— для типовlong long
иunsigned long
.
- Числа с плавающей запятой
-
- (пустая строка) — для типа
float
; l
— для типаdouble
;L
— для типаlong double
.
- (пустая строка) — для типа
- Примеры
-
%hx
— значение типаunsigned short
в шестнадцатеричной записи;%le
— значение типаdouble
в десятичной E-записи.
Отметим, что в контексте функций ряда printf
, указатель разрядности l
не играет никакой роли, если применяется к числу с плавающей запятой. Так, вызовы printf ("%lg", a);
и printf ("%g", a);
совершенно равнозначны. При передаче таким функциям значений типов signed char
, short
, и соответствующих беззнаковых, — указатели разрядности hh
и h
также могут быть опущены.
Примечания
[править]- ↑ WG14 N1570 Committee Draft — April 12, 2011 6.2.5 Types
- ↑ WG14 N1570 Committee Draft — April 12, 2011 Annex E (informative) Implementation limits