Язык Си в примерах/Скалярные типы

Числовые типы править

Список числовых типов, определяемых стандартом, следующий (некоторые из этих типов могут иметь более одного стандартного названия; приведены кратчайшие):[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 также могут быть опущены.

Примечания править