
Предыдущая часть — Курс 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:
Тип данных с плавающей точкой может быть двух видов:
floatdouble
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 типов модификаторов типов данных:
shortlongsignedunsignedlong 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 – токены и ключевые слова.
10 661 views