C — Типы данных
Типы данных в c относятся к обширной системе, используемой для объявления переменных или функций различных типов. Тип переменной определяет, сколько места она занимает в памяти и как интерпретируется сохраненная битовая комбинация.
Типы в C можно классифицировать следующим образом —
Серийный номер | Типы и описание |
---|---|
1 | <тд>|
2 | <тд>|
3 | <тд>|
4 | <тд>
Типы массивов и типы структур вместе называются агрегатными типами. Тип функции определяет тип возвращаемого функцией значения. Мы рассмотрим основные типы в следующем разделе, а другие типы будут рассмотрены в следующих главах.
Целые типы
В следующей таблице приведены подробные сведения о стандартных целочисленных типах с размерами их хранилищ и диапазонами значений —
Тип | Размер хранилища | Диапазон значений |
---|---|---|
знак | 1 байт | от -128 до 127 или от 0 до 255 |
беззнаковый символ | 1 байт | от 0 до 255 |
знак со знаком | 1 байт | -128 до 127 |
int | 2 или 4 байта | от -32 768 до 32 767 или от -2 147 483 648 до 2 147 483 647 |
беззнаковое целое | 2 или 4 байта | от 0 до 65 535 или от 0 до 4 294 967 295 |
короткий | 2 байта | -32 768 до 32 767 |
короткий без знака | 2 байта | от 0 до 65 535 |
длинный | 8 байт или (4 байта для 32-битной ОС) | -9223372036854775808 до 9223372036854775807 |
беззнаковое длинное | 8 байт | от 0 до 18446744073709551615 |
Чтобы получить точный размер типа или переменной на определенной платформе, вы можете использовать sizeof оператор. Выражения sizeof(type) дает размер хранения объекта или типа в байтах. Ниже приведен пример получения размера различных типов на машине с использованием другой константы, определенной в заголовочном файле limit.h —
Живая демонстрация#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("CHAR_BIT : %d\n", CHAR_BIT); printf("CHAR_MAX : %d\n", CHAR_MAX); printf("CHAR_MIN : %d\n", CHAR_MIN); printf("INT_MAX : %d\n", INT_MAX); printf("INT_MIN : %d\n", INT_MIN); printf("LONG_MAX : %ld\n", (long) LONG_MAX); printf("LONG_MIN : %ld\n", (long) LONG_MIN); printf("SCHAR_MAX : %d\n", SCHAR_MAX); printf("SCHAR_MIN : %d\n", SCHAR_MIN); printf("SHRT_MAX : %d\n", SHRT_MAX); printf("SHRT_MIN : %d\n", SHRT_MIN); printf("UCHAR_MAX : %d\n", UCHAR_MAX); printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX); printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX); printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX); return 0; }
Когда вы компилируете и выполняете вышеуказанную программу, она дает следующий результат в Linux —
CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535
Типы с плавающей запятой
В следующей таблице приведены подробные сведения о стандартных типах с плавающей запятой с размерами хранилища и диапазонами значений, а также их точностью —
Тип | Размер хранилища | Диапазон значений | Точность |
---|---|---|---|
плавающий | 4 байта | от 1.2E-38 до 3.4E+38 | 6 знаков после запятой |
двойной | 8 байт | от 2.3E-308 до 1.7E+308 | 15 знаков после запятой |
длинный двойной | 10 байт | от 3.4E-4932 до 1.1E+4932 | 19 знаков после запятой |
Заголовочный файл float.h определяет макросы, которые позволяют вам использовать эти значения и другие сведения о двоичном представлении действительных чисел в ваших программах. В следующем примере выводится место для хранения, занятое типом с плавающей запятой, и его значения диапазона —
Живая демонстрация#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("Storage size for float : %d \n", sizeof(float)); printf("FLT_MAX : %g\n", (float) FLT_MAX); printf("FLT_MIN : %g\n", (float) FLT_MIN); printf("-FLT_MAX : %g\n", (float) -FLT_MAX); printf("-FLT_MIN : %g\n", (float) -FLT_MIN); printf("DBL_MAX : %g\n", (double) DBL_MAX); printf("DBL_MIN : %g\n", (double) DBL_MIN); printf("-DBL_MAX : %g\n", (double) -DBL_MAX); printf("Precision value: %d\n", FLT_DIG ); return 0; }
Когда вы компилируете и выполняете вышеуказанную программу, она дает следующий результат в Linux —
Storage size for float : 4 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Precision value: 6
Тип void
Тип void указывает, что значение недоступно. Он используется в трех случаях —
Серийный номер | Типы и описание |
---|---|
1 | <тд>|
2 | <тд>|
3 | <тд>
Язык C
- Типы переключения
- Переменные C# и (примитивные) типы данных
- Типы данных С++
- C Типы данных
- Типы данных Python
- Типы данных Java (примитивные)
- C Переменная, типы данных, константы
- 5 различных типов центров обработки данных [с примерами]
- 8 различных типов облачных вычислений в 2021 году
- 8 различных типов утечек данных с примерами