Skip to content

Числовые типы данных

Yuriy Syrovetskiy edited this page Dec 26, 2017 · 1 revision

Термины:

  • integer - целый
  • floating - плавающий, подвижный
  • point - точка
  • sign - знак
  • signed - знаковый
  • unsigned - беззнаковый
  • short - короткий
  • lоng - длинный
  • double - двойной

Целочисленные типы

Типы в порядке неуменьшения представляемого диапазона чисел (то есть, "соседние" типы в списке могут оказаться в зависимости от реализации представляющими не разные, а одинаковые диапазоны значений):

Знаковые:

signed char
signed short int
signed int
signed lоng int
signed lоng lоng int

Беззнаковые:

unsigned char
unsigned short int
unsigned int
unsigned lоng int
unsigned lоng lоng int
Типы с lоng lоng не входят в стандарт, но многие компиляторы их поддерживают как расширение.

Типы, имеющие одинаковые названия с точностью до указания знаковости (signed/unsigned) занимают одинаковое место в памяти.

В названии типа можно опустить лексему "int", если кроме неё остаётся ещё какая-то часть. В названии также можно опустить лексему "signed", если кроме неё остаётся ещё какая-то часть (то есть, обозначение типа без указания signed или unsigned, с единственной оговоркой: стандарт языка Си не оговаривает знаковость типа char по умолчанию, то есть, если поведение программы может зависеть от того, знаковый ли char или нет, лучше использовать явное обозначение signed char или unsigned char. Таким образом, например: int, signed, signed int  - это обозначения одного и того же типа. Или, например: unsigned short int и unsigned short - это обозначения одного и того же типа.

Ресурсы компьютера конечны, поэтому целочесленные типы могут содержать только целые числа в диапазоне

  • знаковые — [-2n-1; 2n-1 - 1]
  • беззнаковые — [0; 2n - 1]
где n — размер представления в битах.

Типы с плавающей точкой

Типы с плавающей точкой - один из способов приближённого представления действительных чисел. Под точкой понимается разделитель целой и дробной части (в русскоязычной нотации для этого обычно используют запятую, а не точку). Смысл термина "плавающий" в том, что значения хранятся как набор цифр числа ("мантисса") и, дополнительно, положение точки в этом наборе (более точно - показатель степени, в которую возводится основание используемой системы счисления, и умножается на значение мантиссы).

Типы с плавающей точкой знаковые, и для них не существует беззнаковых аналогов.

  • float — 32 бита — обычный тип с плавающей точкой, по современным меркам не рекомендуется
  • double — 64 бита — тип двойной точности, рекомендуется для всего, кроме денег
  • lоng double — 80 бит — ещё больше точность, но почти никогда не нужен
Для расчёта денежных сумм следует использовать типы с фиксированной (не плавающей) точкой. Они не встроены в язык С. Возможно, мы рассморим их позже.

Ресурсы компьютера конечны, поэтому типы с плавающей точкой могут содержать только целые числа в диапазоне

  • float — ± 3.4 · 10±38, то есть до 3.4 · 1038 по модулю и около 7 значащих десятичных цифр
  • double — ± 1.7 · 10±308, то есть до 3.4 · 10308 по модулю и около 15 значащих десятичных цифр
Clone this wiki locally