Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Основные типы данных в языке Си (C)

Имя

Размер

Представляемые значения

Диапазон

(signed) char

1 байт

символы
целые числа

 
от –128 до 127

(signed) short int

2 байта

целые числа

от -32768 до 32767

(signed) int

зависит от реализации
(в последних компиляторах обычно 4 байта)

целые числа

 

(signed) long int

4 байта

целые числа

от -2147483648 до 2147483647

unsigned char

1 байт

символы
целые числа

 
от 0 до 255

unsigned short int

2 байта

целые числа

0 до 65535

unsigned int

зависит от реализации
(в последних компиляторах обычно 4 байта)

целые числа

 

unsigned long int

4 байта

целые числа

от 0 до 4294967295

float

4 байта

вещественные числа

от 1.175494351e–38
до 3.402823466e+38

double

8 байт

вещественные числа

от 2.2250738585072014e–308
до 1.7976931348623158e+308

long double

зависит от реализации

вещественные числа

 

В языке C также существуют перечислимый тип – enum , который является подмножеством целого типа, и пустой тип – void, который имеет специальное назначение. Он используется для объявления функций, которые не возвращают никакого значения, а также для объявления указателей на значение типа void. Такие указатели могут быть преобразованы к указателям на любой другой тип.

В языке С можно объявлять структуры и так называемые объединения.

В языке C нет специальных типов для массивов, строк (которые представляются массивом символов), и для логических значений. Логические значения представляются данными целого типа, при этом значение 0 соответствует логическому значению ложь, а все остальные целые значения соответствуют логическому значению истина. Этим свойством языка C можно пользоваться, например, следующим образом: значение некоторой переменной, равное 0, говорит об отсутствии некоторого признака у объекта, а остальные значения говорят о его наличии, и при этом несут какую-либо дополнительную информацию.

В языке С контроль типов не так силён, как в Паскале. Вы можете выполнять любые разумные присвоения между переменными разных типов. Кроме того, при выполнении большинства операций производятся преобразования по умолчанию для приведения операндов к одному и тому же типу:

  • все операнды типа float преобразуются к типу double ;
  • если один операнд имеет тип double , то второй операнд преобразуется к типу double ;
  • если один операнд имеет тип unsigned long , то второй операнд преобразуются к типу unsigned long ;
  • если один операнд имеет тип long int , то второй операнд преобразуются к типу long int ;
  • если один операнд имеет тип unsigned int , то второй операнд преобразуются к типу unsigned int ;
  • все операнды типов char и short преобразуются к типу int ;
  • все операнды типов unsigned char и unsigned short преобразуются к типу unsigned int ;
  • иначе оба операнда имеют тип int .

В языке С нет операций преобразованием между символом и кодом символа, т.к. в оперативной памяти символ и так храниться в виде его кода. Поэтому можно к переменной, хранящей символ, прибавить 1 и получить следующий символ.

Контроль типов языка С можно (но не нужно!) обойти с помощью операции приведения типа.