Типы данных
Каждой программе нужны данные определенного типа для отображения значимого результата. Этот определенный тип данных известен как тип данных.
ANSI C поддерживает четыре класса типов данных:
- Первичные типы данных
- Пользовательские типы данных
- Производные типы данных
- Пустой набор данных
Все C компиляторы поддерживают четыре основных типа данных
Тип | Диапазон значений | Описание |
char (Символы) |
от -128 до 127 | один байт (8 бит) и может хранить данные одного символьного типа |
int Целые числа (целые числа) |
от -32768 до 32767 | целочисленный тип используется для представления целых чисел в указанном диапазоне значений. |
float |
от 3.4e-38 до 3.4e + 38 | с плавающей запятой одинарной точности |
double |
от 1,7e-308 до 1,7e + 308 | с плавающей запятой двойной точности |
Типы символов:
Отдельный символ может быть определен как данные символьного типа. Символы обычно хранятся во внутренней памяти размером 8 бит. Квалификатор signed или unsigned может быть явно применен к char. В то время как символы без знака имеют значения от 0 до 255, символы со знаком имеют значения от -128 до 127.
Целочисленные типы:
В C есть три класса целочисленных хранилищ, а именно short int, int и long int, как в знаковой, так и в беззнаковой форме.
Ключевые слова signed и unsigned — это два квалификатора знака, которые определяют, может ли переменная хранить положительные или отрицательные или оба числа.
Ключевое слово signed использует один бит для знака и 15 битов для величины числа в 16-битной машине.
Ключевое слово unsigned используется для хранения всех битов величины числа и всегда положительно.
Типы с плавающей запятой:
Числа с плавающей запятой хранятся в 32-битном формате с 6-значной точностью. Числа с плавающей запятой определены в C ключевым словом float. Когда точность, обеспечиваемая числом с плавающей запятой, недостаточна, для определения числа можно использовать тип double.
Типы двойных точек:
Число типа данных double использует 64 бита, что дает точность до 14 цифр. Они известны как числа с двойной точностью. Помните, что тип double представляет тот же тип данных, что и float, но с большей точностью. Чтобы еще больше повысить точность, мы можем использовать long double, который использует 80 бит.
В следующей таблице показаны размер и диапазон спецификаторов типа в наиболее распространенных реализациях:
Type | Size(bits) | Range |
char или подписанный символ | 8 | от -128 до 127 |
unsigned char | 8 | от 0 до 255 |
int или целое число со знаком | 16 | -32768 до 32767 |
unsigned int | 16 | от 0 до 65535 |
short int или signed short int | 8 | От -128 до 127 |
unsigned short int | 8 | от 0 до 255 |
long int или signed long int | 32 | -2147483648 до 2147483647 |
unsigned long int | 32 | от 0 до 4294967295 |
float | 32 | 3.4E-38 TO 3.4E + 38 |
двойной | 64 | 1.7E-308 TO 1.7E + 308 |
80 | 3.4E-4932 TO 1.1E + 4932 |
Размеры и диапазоны для каждого типа данных C в нашей системе:
#include #include #include int main (void) {printf ("Размер типов данных C: n n"); printf ("Байты типа n n"); printf ("-------------------------------- n"); printf ("char% lu n", sizeof (char)); printf ("int8_t% lu n", sizeof (int8_t)); printf ("символ без знака% lu n", sizeof (символ без знака)); printf ("uint8_t% lu n", sizeof (uint8_t)); printf ("короткий% lu n", sizeof (короткий)); printf ("int16_t% lu n", sizeof (int16_t)); printf ("uint16t% lu n", sizeof (uint16_t)); printf ("int% lu n", sizeof (int)); printf ("беззнаковый% lu n", sizeof (беззнаковый)); printf ("длинный% lu n", sizeof (длинный)); printf ("длинное беззнаковое% lu n", sizeof (длинное беззнаковое)); printf ("int32_t% lu n", sizeof (int32_t)); printf ("uint32_t% lu n", sizeof (uint32_t)); printf ("длинный длинный% lu n", sizeof (длинный длинный)); printf ("int64_t% lu n", sizeof (int64_t)); printf ("длинный беззнаковый длинный% lu n", sizeof (беззнаковый длинный длинный)); printf ("uint64_t% lu n", sizeof (uint64_t)); printf ("float% lu n", sizeof (float)); printf ("двойной% lu n", sizeof (двойной)); printf ("длинный двойной% lu n", sizeof (длинный двойной)); printf ("_Bool% lu n", sizeof (_Bool)); printf (" n"); return 0;}
Вывод:
Размер типов данных C: байты типа ------ -------------------------- char 1int8_t 1unsigned char 1uint8_t 1short 2int16_t 2uint16t 2int 4unsigned 4long 8unsigned long 8int32_t 4uint32_t 4long long 8int64_t 8unsigned long long 8uint64_t 8float 4double 8long double 16_Bool 1
Минимальные и максимальные значения для каждого из типов данных C в нашей системе:
#include #include #include #include #include int main (void) {printf ("Диапазоны для целочисленных типов данных в C n n"); printf ("----------------------------------------------- ------------- n "); printf ("int8_t% 20d% 20d n", SCHAR_MIN, SCHAR_MAX); printf ("int16_t% 20d% 20d n", SHRT_MIN, SHRT_MAX); printf ("int32_t% 20d% 20d n", INT_MIN, INT_MAX); printf ("int64_t% 20lld% 20lld n", LLONG_MIN, LLONG_MAX); printf ("uint8_t% 20d% 20d n", 0, UCHAR_MAX); printf ("uint16_t% 20d% 20d n", 0, USHRT_MAX); printf ("uint32_t% 20d% 20u n", 0, UINT_MAX); printf ("uint64_t% 20d% 20llu n", 0, ULLONG_MAX); printf (" п"); printf ("=============================================== ============= n n "); printf ("Диапазоны для типов данных вещественных чисел в C n n"); printf ("----------------------------------------------- ------------- n "); printf ("flaot% 14.7g% 14.7g n", FLT_MIN, FLT_MAX); printf ("двойной% 14.7g% 14.7g n", DBL_MIN, DBL_MAX); printf ("длинный двойной% 14.7Lg% 14.7Lg n", LDBL_MIN, LDBL_MAX); printf (" n"); return 0;}
Вывод:
Диапазоны для целочисленных типов данных в C ------- -------------------------------------------------- --- int8_t -128 127int16_t -32768 32767int32_t -2147483648 2147483647int64_t -9223372036854775808 9223372036854775807uint8_t 0 255uint=========== 0 65535uint32_t 0 42949========= 065535uint32_t 0 42949_======= 065535uint32_t 0 4294967295uint64674967295uint64 ================================== Диапазоны для типов данных вещественных чисел в C -------- -------------------------------------------------- --flaot 1.175494e-38 3.402823e + 38double 2.225074e-308 1.797693e + 308long double 3.362103e-4932 1.189731e + 4932