Типы данных в c относятся к обширной системе, используемой для объявления переменных или функций различных типов. Тип переменной определяет, сколько места она занимает в хранилище и как интерпретируется сохраненный битовый шаблон.
Типы в C могут быть классифицированы следующим образом:
Sr.No. | Типы и описание |
---|---|
1 |
Основные типы Они являются арифметическими типами и далее подразделяются на: (а) целочисленные типы и (б) типы с плавающей точкой. |
2 |
Перечисляемые типы Они снова являются арифметическими типами и используются для определения переменных, которые могут назначать только определенные дискретные целочисленные значения по всей программе. |
3 |
Тип пустоты Спецификатор типа void указывает, что значение недоступно. |
4 |
Производные типы Они включают (a) типы указателей, (b) типы массивов, (c) типы структур, (d) типы объединений и (e) типы функций. |
Основные типы
Они являются арифметическими типами и далее подразделяются на: (а) целочисленные типы и (б) типы с плавающей точкой.
Перечисляемые типы
Они снова являются арифметическими типами и используются для определения переменных, которые могут назначать только определенные дискретные целочисленные значения по всей программе.
Тип пустоты
Спецификатор типа void указывает, что значение недоступно.
Производные типы
Они включают (a) типы указателей, (b) типы массивов, (c) типы структур, (d) типы объединений и (e) типы функций.
Типы массивов и типы структур совместно называются агрегатными типами. Тип функции указывает тип возвращаемого значения функции. Мы увидим основные типы в следующем разделе, где другие типы будут рассмотрены в следующих главах.
Целочисленные типы
В следующей таблице приведены сведения о стандартных целочисленных типах с их размерами хранения и диапазонами значений.
Тип | Размер хранилища | Диапазон значений |
---|---|---|
голец | 1 байт | От -128 до 127 или от 0 до 255 |
без знака | 1 байт | От 0 до 255 |
подписанный символ | 1 байт | От -128 до 127 |
ИНТ | 2 или 4 байта | От -32 768 до 32 767 или от -2 147 483 648 до 2 147 483 647 |
без знака int | 2 или 4 байта | От 0 до 65 535 или от 0 до 4 294 967 295 |
короткая | 2 байта | От -32 768 до 32 767 |
неподписанный короткий | 2 байта | От 0 до 65 535 |
долго | 8 байт | От -9223372036854775808 до 9223372036854775807 |
без знака долго | 8 байт | От 0 до 18446744073709551615 |
Чтобы получить точный размер типа или переменной на конкретной платформе, вы можете использовать оператор sizeof . Выражение sizeof (тип) возвращает размер хранилища объекта или типа в байтах. Ниже приведен пример получения размера различного типа на машине с использованием другой константы, определенной в заголовочном файле 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
В C есть различные функции, которые не возвращают никакого значения, или вы можете сказать, что они возвращают void. Функция без возвращаемого значения имеет тип возврата как void. Например, void exit (int status);
Аргументы функции как void
В C есть различные функции, которые не принимают никаких параметров. Функция без параметра может принять пустоту. Например, int rand (void);
Указатели на аннулирование
Указатель типа void * представляет адрес объекта, но не его тип. Например, функция выделения памяти void * malloc (size_t size); возвращает указатель на void, который может быть приведен к любому типу данных.