Предыдущая часть – Курс C с нуля: часть 2 – printf и scanf.
- типы данных в C – это формат хранения данных, в которых переменная может хранить данные для выполнения с ними дальнейших действий;
- тип данных используется для объявления переменной перед ее использованием в программе;
- размер переменной, константы или массива определяется ее типом данных.
Содержание
С – типы данных
В C имеется четыре основных группы типов данных
Типы |
Data Types
|
|
1 | базовые типы | int, char, float, double |
2 | перечисления | enum |
3 | производные типы | pointer, array, structure, union |
4 | тип void | void |
1. Базовые типы данных в C
1.1. тип данных integer
- Тип
integer
(целочисленные данные) позволяет хранить в перменной числа; - для определения типа
integer
используется ключевое слово “int
“; - размер данных типа
int
может быть от 2, 4 или 8 байт; - размер зависит от типа процессора – для 16-ти битных машин это будет 2 байта (16 бит), 4 байта (32 бита) для машин х32, и 8 байт (64 бита) – для 64-х битных процессоров;
- переменная типа
int
(2 байта) может хранить значение от -32,768 до +32,767; - переменная типа
int
(4 байта) может хранить значение от-2,147,483,648 до +2,147,483,647; - если вам потребуется хранить большее число, которое превышает лимит
int
– вы можете использовать такие типы какlong int
иlong long int
.
Примечание:
- вы не можете хранить цифры с десятичной часть в переменной типа
int
; - если вы присвоите значение переменной типа
int
в виде числа с десятичной частью – она будет обрезана, а переменная будет хранить только ее целую часть; - для хранения таких чисел – используйте тип
float
.
1.2. тип данных character:
- тип данных
char
(character
) позволяет переменной хранить только один символ; - размер хранилища типа
char
всегда будет равен одному байту; - для определения типа
character
используется ключевое слово “char
“; - мы рассмотрим строки (strigns) позже, что бы увидеть – как хранить более 1-го символа в переменной.
1.3. тип данных floating point
:
Тип данных с плавающей точкой может быть двух видов:
float
double
1. float
:
- тип данных с плавающей точкой используется для хранения десятичных чисел;
- размер выделяемой памяти под тип
float
– 4 байта, но так же зависит от архитектуры ЦПУ, как и типint
; - во
float
можно хранить числа с 6-ю символами после точки, например – 10.456789; - максимально допустимый размер для данных этого типа – от 1.2E-38 до 3.4E+38.
2. double
:
- тип
double
аналогиченfloat
– но может хранить до 10 символов после точки; - максимально допустимый размер для данных этого типа – от 1E–37 до 1E+37.
1.3.1. функция sizeof()
:
Функция sizeof()
используется для получения размера памяти, выделяемой для типа данных на конкретной машине.
Например:
#include <stdio.h> #include <limits.h> int main() { int a; char b; float c; double d; printf("Storage size for int data type:%d n",sizeof(a)); printf("Storage size for char data type:%d n",sizeof(b)); printf("Storage size for float data type:%d n",sizeof(c)); printf("Storage size for double data type:%dn",sizeof(d)); return 0; }
Результат:
$ ./sizeof Storage size for int data type:4 Storage size for char data type:1 Storage size for float data type:4 Storage size for double data type:8
1.3.2. модификаторы типов данных в C:
- размер памяти, выделяемой переменной, определяется модификаторами;
- модификаторы указываются перед типом данных, который необходимо изменить;
- например, для типа
int
выделяется 4 байта (на 32-х битной системе), которые мы можем увеличить до 8 байт с помощьюlong int
– или уменьшить до 2-х, с помощью модификатораshort int
; - модификаторы так же называют “описателями” и “квалификаторами”.
В C имеется 5 типов модификаторов типов данных:
short
long
signed
unsigned
long long
В таблице ниже представлены возможные комбинации и размеры памяти, выделяемой при использовании различных типов данных:
S.No | C Data types | storage Size | Range |
1 | char |
1 | –127 to 127 |
2 | int |
2 | –32,767 to 32,767 |
3 | float |
4 | 1E–37 to 1E+37 with six digits of precision |
4 | double |
8 | 1E–37 to 1E+37 with ten digits of precision |
5 | long double |
10 | 1E–37 to 1E+37 with ten digits of precision |
6 | long int |
4 | –2,147,483,647 to 2,147,483,647 |
7 | short int |
2 | –32,767 to 32,767 |
8 | unsigned short int | 2 | 0 to 65,535 |
9 | signed short int< /td> |
2 | –32,767 to 32,767 |
10 | long long int |
8 | –(2power(63) –1) to 2(power)63 –1 |
11 | signed long int |
4 | –2,147,483,647 to 2,147,483,647 |
12 | unsigned long int |
4 | 0 to 4,294,967,295 |
13 | unsigned long long int |
8 | 2(power)64 –1 |
2. перечисляемый тип данных в C:
- “перечисляемый тип” так же называют
enumeration
– перечисление; - перечисляемый тип данных состоит из целочисленных именованных констант в виде списка;
- по умолчанию – первой константе присваивается значение 0, которое увеличивается на 1 для каждого следующего элемента.
Синтаксис перечислений выглядит так:
enum тег {список перечисления} список переменных;
Примеры перечисления:
enum month { Jan, Feb, Mar }
– Jan будет равен 0, Feb 1, Mar == 2;enum month { Jan = 1, Feb, Mar }
– Jan будет равен 1, Feb 2, Mac == 3;enum month { Jan = 20, Feb, Mar }
– Jan будет равен 20, Feb 21, Mac == 22;
Аналогично можно использовать директиву препроцессора #define
:
#define Jan 20; #define Feb 21; #define Mar 22;
C – enum пример программы:
#include <stdio.h> int main() { enum MONTH { Jan = 0, Feb, Mar }; enum MONTH month = Mar; if(month == 0) printf("Value of Jann"); else if(month == 1) printf("Month is Febn"); else if(month == 2) printf("Month is Marn"); return 0; }
Результат ее работы:
$ ./enum Month is Mar
Массивы, указатели, структуры и объединения (unions) называются “производными типами данных”, и будут рассмотрены позже.
4. тип данны void
:
void
– пустой тип данных, не имеющих никакого значения;- может использоваться в функциях и структурах;
- будут рассмотрены детальнее в Функциях.
Продолжение – Курс C с нуля: часть 4 – токены и ключевые слова.