Типы данных в языке C++
Админ сайта Разработка на C++ Просмотров: 680
User Rating: 0 / 5
Рейтинг (0)В этой статье мы с вами познакомимся с основными типами данных, которые предоставляет разработчику язык C++.
Итак, давайте приступим. В языке C++ типы данных предназначены для объявления переменных. Тип данных определяет тип и размер данных, которые связаны с какой-то конкретной переменной. Все типы данных делятся на три основные категории: целочисленные, с плавающей точкой и void. Все типы данных задаются стандартом языка C++ и встроены в компилятор.
Посмотрим сразу на список примитивных встроенных в C++ типов данных:
- int — тип данных для хранения целых чисел. Размер памяти от 2 до 4 байт
е. десятичных чисел (десятичных дробей). Размер памяти 4 байта
- double — тип данных для хранения чисел с «плавающей точкой» двойной точности. Похож на тип данных float, но обеспечивает большую точность при расчётах и использовании десятичных дробей. Размер памяти 8 байт
- char — тип данных для хранения одного символа. Размер памяти 1 байт
- wchar_t — тип данных для хранения одного «расширенного» символа. Размер памяти 2 байта
- bool — логический тип данных, используется для хранения значений булева типа, т.е. тех, что могут принимать значения «истина» или «ложь». Размер памяти 1 байт
- void — тип данных, обозначающий «пустоту», или «отсутствие какого-то значения». Размер памяти 0 байт
Язык C++ чрезвычайно мощный, и на перечисленном выше списке возможные типы данных, которые могут использоваться в C++, не ограничиваются.
Некоторые из базовых типов могут быть также изменены с помощью одного или нескольких модификаторов типа:
- signed
- unsigned
- short
- long
Далее по тексту статьи мы узнаем, как это делается, а пока остановимся на тех примитивных типах данных, что описаны выше, и посмотрим на несколько примеров их использования.
Тип данных int
Тип данных int широко применяется там, где нужна работа с целыми числами. Ниже показано простое объявление трёх разных переменных с типом int:
int daysInWeek = 7; int monthsInYear = 12; int currentYear = 2022;
Тип данных float
Тип данных float, в отличие от типа int, используется для хранения «чисел с плавающей точкой», т.е., попросту говоря, десятичных дробей. Давайте поглядим, как можно объявить переменные типа float:
float bottleVolume = 0.5; float normalHumanTemperature = 36.6;
Тип данных double
Как уже было сказано, тип данных double очень похож на float, за исключением того, что он использует больше памяти для хранения данных (8 байт вместо 4 байт для типа float). В остальном определения переменных с типом double выглядят почти так же, как и для вышеупомянутых типов:
double doubleVal1 = 1234.56789101112; double doubleVal2 = -77.1122334455667788;
Тип данных char
Тип данных char используется для хранения символов (от англ. characters, отсюда и название самого типа данных). Значения для этого типа данных заключаются с обеих сторон в одинарные кавычки ( ‘ ), например, давайте объявим пару переменных с этим типом данных:
char chA = 'A'; char chB = 'B'; char chQuestionMark = '?';
Тип данных bool
Тип данных bool может иметь всего одно из двух возможных значений — true или false. Значение true обозначает «истину», а false — «ложь». Посмотрим на пример:
bool isNegative = false; bool isDataEntered = true;
В примере выше объявили две переменных с типом
Тип данных void
Тип данных void показывает отсутствие данных. Он обозначает буквально «ничто» или «нет значения». Тип данных void как правило используется при работе с функциями и указателями. Важным моментом, который нужно запомнить, является то, что мы не можем объявить переменную с типом void.
А вот как может выглядеть объявление функции с типом void, которая «ничего не возвращает» (фактически, этот метод является процедурой):
void functionReturningNothing() { // делаем здесь что-то... }
Теперь, когда мы рассмотрели основные встроенные примитивные типы данных, вернёмся к вопросу о том, как они могут быть изменены с помощью модификаторов типа на примере следующей таблицы:
Тип данных | Размер памяти под тип данных | Диапазон принимаемых значений |
int | 4 байта | от -2 147 483 648 до 2 147 483 647 |
unsigned int | 4 байта | от 0 до 4 294 967 295 |
signed int | 4 байта | от -2 147 483 648 до 2 147 483 647 |
short int | 2 байта | от -32 768 до 32 767 |
unsigned short int | 2 байта | от 0 до 65 535 |
char | 1 байт | от -127 до 127 или от 0 до 255 |
unsigned char | 1 байт | от 0 до 255 |
signed char | 1 байт | от -127 до 127 |
long int | 8 байт | от -2 147 483 648 до 2 147 483 647 |
signed long int | 8 байт | от -2 147 483 648 до 2 147 483 647 |
unsigned long int | 8 байт | от 0 до 4 294 967 295 |
long long int | 8 байт | от -(2^63) до (2^63)-1 |
unsigned long long int | 8 байт | от 0 до 18 446 744 073 709 551 615 |
float | 4 байта | относительное значение диапазона: является наименьшим типов с плавающей запятой в C++ (абсолютный размер встроенных типов с плавающей запятой не указан в стандарте языка C++) |
double | 8 байт | относительное значение диапазона: значения больше или равны типу float, но меньше, чем у long double (абсолютный размер встроенных типов с плавающей запятой не указан в стандарте языка C++) |
long double | 12 байт | относительное значение диапазона принимаемых значений: значения больше или равны размеру типа double (абсолютный размер встроенных типов с плавающей запятой не указан в стандарте языка C++) |
Посмотрим, как можно объявлять переменные с некоторыми из расширенных типов данных, представленных в таблице:
unsigned char ch = 255; unsigned long int veryLongInt = 18446744073709551615; long double veryLongDoubleValue = 0.333333333333333333333333333333333333333333333333333;
Напоследок, мы можем написать небольшую программу на C++, которая выведет для нас размер выделяемой памяти под все описанные в статье типы данных C++. Обратите внимание на использования для этой цели специального оператора sizeof:
#include <iostream> int main() { std::cout << "Size of 'int' data type: " << sizeof(int) << " bytes" << std::endl; std::cout << "Size of 'unsigned int' data type: " << sizeof(unsigned int) << " bytes" << std::endl; std::cout << "Size of 'signed int' data type: " << sizeof(signed int) << " bytes" << std::endl; std::cout << "Size of 'short int' data type: " << sizeof(short int) << " bytes" << std::endl; std::cout << "Size of 'unsigned short int' data type: " << sizeof(unsigned short int) << " bytes" << std::endl; std::cout << "Size of 'float' data type: " << sizeof(float) << " bytes" << std::endl; std::cout << "Size of 'double' data type: " << sizeof(double) << " bytes" << std::endl; std::cout << "Size of 'long double' data type: " << sizeof(long double) << " bytes" << std::endl; std::cout << "Size of 'bool' data type: " << sizeof(bool) << " bytes" << std::endl; std::cout << "Size of 'char' data type: " << sizeof(char) << " bytes" << std::endl; std::cout << "Size of 'unsigned char' data type: " << sizeof(unsigned char) << " bytes" << std::endl; std::cout << "Size of 'signed char' data type: " << sizeof(signed char) << " bytes" << std::endl; std::cout << "Size of 'wchar_t' data type: " << sizeof(wchar_t) << " bytes" << std::endl; std::cout << "Size of 'long int' data type: " << sizeof(long int) << " bytes" << std::endl; std::cout << "Size of 'unsigned long int' data type: " << sizeof(unsigned long int) << " bytes" << std::endl; std::cout << "Size of 'long long int' data type: " << sizeof(long long int) << " bytes" << std::endl; std::cout << "Size of 'unsigned long long int' data type: " << sizeof(unsigned long long int) << " bytes" << std::endl; }
Результат выполнения программы на экране консоли будет выглядеть следующим образом:
Size of 'int' data type: 4 bytes
Size of 'unsigned int' data type: 4 bytes
Size of 'signed int' data type: 4 bytes
Size of 'short int' data type: 2 bytes
Size of 'unsigned short int' data type: 2 bytes
Size of 'float' data type: 4 bytes
Size of 'double' data type: 8 bytes
Size of 'long double' data type: 8 bytes
Size of 'bool' data type: 1 bytes
Size of 'char' data type: 1 bytes
Size of 'unsigned char' data type: 1 bytes
Size of 'signed char' data type: 1 bytes
Size of 'wchar_t' data type: 2 bytes
Size of 'long int' data type: 4 bytes
Size of 'unsigned long int' data type: 4 bytes
Size of 'long long int' data type: 8 bytes
Size of 'unsigned long long int' data type: 8 bytes
Как видите, даже если Вы вдруг забыли, сколько именно байт в памяти будет занимать переменная какого-то типа данных. Ведь при помощи указанного выше способа можно легко это определить самостоятельно, средствами языка C++.
Надеюсь, эта статья пригодится и будет полезна всем разработчикам, работающим с языком C++.
Напоследок отмечу, что если Вы работаете со средой C++ в среде разработки Microsoft Visual Studio, то более подробно о типах данных в языке C++ можно также почитать здесь.
Спасибо за внимание, удачи! Буду благодарен за отзывы в комментариях к этой статье.
- C++
- Обучение C++
- Назад
- Вперед
Дополнительные типы данных в C
<stdint.h>
Типы int16_t
, uint16_t
, … — это не совсем то же самое, что и базовые целочисленные типы (англ. basic integer types) в C (char
, int
, short
и т. д. ).
Основное отличие заключается в том, что для «обычных» типов стандарт определяет только одно — диапазон допустимых значений. Больше никаких требований на эти типы стандарт не налагает. Они могут быть сколь угодно широкие, их внутреннее представление может быть каким угодно, главное, чтобы сохранялась относительная ширина типов и диапазон допустимых значений. Это все, что требует стандарт. И именно эта нетребовательность стандарта позволяет этим типам быть максимально переносимыми.
Другое дело — типы из <stdint.h>
. Они были введены в C99 и называются фиксированными целочисленными типами (англ. fixed integer types). На такие типы стандарт налагает гораздо больше требований. Например, типы определенной ширины (англ. exact-width integer types) (int8_t
, int16_t
, int32_t
и int64_t
) должны представляться в дополнительном коде, иметь ширину в 8, 16, 32 и 64 бита соответственно и не должны содержать padding bits. Также определяются типы с шириной не меньше гарантированной; максимально широкие типы; типы, работа с которым максимально быстрая и так далее.
Чувствуете эту разницу? На последние стандарт налагает гораздо больше требований, что делает их гораздо менее переносимыми, но дает разработчику гораздо большую гибкость. Что, если мне нужен целочисленный тип, шириной ровно в 8 бит, или с шириной не меньше 32 бита? Стандарт предоставляет мне такую возможность на уровне языка. Возможность использования таких типов в конкретном случае зависит лишь от реализации. Вдруг, на некоторой машине в принципе не существует типов ровно в 8 бит длиной? Стандарт как бы говорит: «Нужно целочисленное число ровно в 8 бит шириной — пожалуйста, используйте int8_t
, если, конечно, ваша реализация его поддерживает».
size_t
Тип size_t
нужен для одного — представлять размеры объектов. Этот тип может представить максимально возможный размер любого объекта.
Одно из следствий такого «свойства» — это то, что size_t
— единственный† тип, для которого гарантируется, что он может хранить любой возможный индекс массива (в следствии того, что массив в C — это объект).
Из этого следствия вытекает частое применение этого типа как типа для различных счетчиков в цикле, которые перебирают массивы. И это единственный подходящий тип для данной задачи!
Создатели языка решили определить отдельный тип для такой задачи (представление размера объектов). И вот почему. Представим, что у нас вообще нет такого типа, как size_t
и перед нами стоит задача написать свой функцию strlen
с использованием, например, цикла for
:
for (... i = 0; str[i] != '\0'; ++i)
Какой тип мы будем использовать для счетчика? Может int
? Но это неэффективно, так как индекс не может быть отрицательным. Тогда, пожалуй, unsigned int
. Уже лучше, но что, если наша строка длиннее, чем UINT_MAX
? Тогда возьмем unsigned long
! Но, что если максимальная длина строки на платформе гораздо меньше ULONG_MAX
и настолько большой тип будет неэффективен?..
Чтобы разработчику в такой ситуации не гадать, что да как, и был введен тип size_t
.
† Как правильно заметил @wololo в комментариях, есть еще uintmax_t
и rsize_t
, которые также могут хранить любой возможный индекс массива. Следует иметь в виду, что rsize_t
определяется в Приложении K стандарта C11. Это приложение реализовано далеко не везде. Более того: существует proposal вообще убрать его из стандарта.
типов данных в C | Типы данных C
Обзор
Типы данных в C (или в любом другом языке программирования) очень важно изучить и понять, прежде чем вы начнете писать программу.
Они необходимы для хранения различных типов данных, таких как целые числа, символы, десятичные дроби, строки или даже определяемые пользователем.
Scope
- В этой статье мы рассмотрим, зачем нам нужны типы данных.
- Мы поймем различные классификации типов данных на разных уровнях.
- Мы рассмотрим все различные типы первичных типов данных и диапазон данных, которые они могут хранить.
- Мы также поймем и узнаем, как мы можем кодировать наши собственные вторичные типы данных.
Зачем нужны типы данных в C
Мы знаем, что компьютеры хранят все данные в виде двоичных чисел, и каждому из них выделяется память. Теперь предположим, что вы хотите создать программу для хранения вашего имени, возраста и номера телефона. Без упоминания типов данных ваш компьютер не сможет различить ваше имя, возраст и номер телефона и будет относиться к ним одинаково, выделяя одну и ту же память и сохраняя их в одном наборе переменных.
Возраст состоит из 2-3 цифр, а номер телефона состоит как минимум из 10 цифр, но компьютеры будут выделять одну и ту же память для них обоих, что приведет к большому расходу памяти.
Чтобы справиться с такими сценариями, мы назначаем типы данных для каждой переменной, чтобы избежать путаницы или потери памяти.
Что такое типы данных в C
Тип данных — это атрибут данных, который сообщает компилятору C, какой тип данных содержит переменная.
Может быть целым числом, числом с плавающей запятой (десятичное), символьным, логическим (истина/ложь) и т. д.
Формально мы используем типы данных для указания типа данных, которые хранятся в наших переменных.
Обычно в C существует два типа типов данных:
a. Первичные типы данных или основные типы данных б. Вторичные типы данных
A. Первичные типы данных или базовые типы данных
Это самые основные типы данных, и все другие типизированные данные являются производными или создаются только из них. Он содержит целое число, плавающую точку и char.
Четыре основных типа первичных/базовых типов данных:
- Целое число
- Поплавок
- Символ
- Пустота
Теперь они далее классифицируются как короткие, длинные, двойные, длинные двойные, знаковые и беззнаковые типы данных в C.
Прежде чем обсуждать это, давайте сначала разберемся, что означают короткие, длинные, знаковые и беззнаковые типы данных в C.
SHORT AND LONG
Они используются для определения объема памяти, выделяемого компилятором. В случае короткого целого это обычно 2 байта, а в длинном — 4 байта.
SIGNED AND UNSIGNED
Это также относится только к выделению памяти, но другим способом. В случае со знаком int учитываются как отрицательные, так и положительные числа. Но в unsigned int мы можем представлять только положительные числа. Теперь, поскольку диапазон значений уменьшается без знака, он может представлять более высокие значения в той же перспективе памяти.
Давайте разберемся на примере. Тип данных Integer состоит из 2-байтовой памяти.
1 байт = 8 бит 2 байта = 16 бит 9(16 бит)= 65536
В случае типа данных unsigned int есть только положительные числа, а поскольку ноль также входит в число положительных чисел, поэтому unsigned int может принимать значения от 0 до 65535.
Теперь рассмотрим случай знакового типа данных, он имеет как положительные, так и отрицательные числа. Таким образом, общая длина текущей памяти делится на две равные половины (65536/2= 32768), одна половина для представления положительных чисел (от 0 до 32767), а другая половина для представления отрицательных чисел (от -1 до -32768).
Это применимо ко всем другим типам данных, таким как float char и т. д.
Теперь аналогичным образом вы можете найти диапазон значений всех типов данных, таких как float, char, double и т. д.
Просто возьмите ручку и бумагу и найдите диапазон подписанного символа, беззнакового символа, подписанного поплавка и беззнакового поплавка.
Надеюсь, вам понравилось упражнение!!!
LONG AND LONG DOUBLE
В основном используются с десятичными числами. Используя эти префиксы, мы можем увеличить диапазон значений, представленных в float. Float имеет размер 4 байта, double — 8 байтов, а long double — 10 байтов. 98). Объем памяти зависит от использования префиксов (надеюсь, вы помните это упражнение, которое мы сделали выше).
Вывод
2. ТИП ДАННЫХ INT В C
Он используется для хранения целочисленных значений и требует памяти в соответствии со значением целого числа, которое мы хотим сохранить.
Размер int зависит от компилятора. Например, 32-битные компиляторы имеют int как 4 байта, но 64-битные компиляторы (которые мы используем сейчас) имеют int как 8 байтов.
И поскольку размер варьируется, диапазон значений, которые могут хранить целые числа, также варьируется от компилятора к компилятору. 9(4*8) длина значения, которая составляет 4,29,49,67,296, т.е. числа от 0 до 4,29,49,67,296 могут быть представлены с использованием числа с плавающей запятой.
Вывод
Размер различных типов данных на моем компьютере (64-разрядный). Используя аналогичную программу, вы можете найти размер в своем собственном компиляторе. (Вы делаете это упражнение, чтобы развеять все свои сомнения относительно размера!!)
Вывод:
4.

Это специальный тип, известный как пустой тип данных, который используется для указания того, что данная переменная не имеет никакого типа. . Это в основном используется при определении функций, в которых мы не хотим возвращать какое-либо значение.
Ниже приведены данные о размере типа данных на основе 32-битного компилятора и 64-битного компилятора. в основном бывают двух типов:
- ПОЛЬЗОВАТЕЛЬСКИЕ ТИПЫ ДАННЫХ
- ТИП ПРОИЗВОДНЫХ ДАННЫХ
1. ПОЛЬЗОВАТЕЛЬСКИЕ ТИПЫ ДАННЫХ В C
Эти типы данных определяются пользователем в соответствии с их удобством. Если пользователь чувствует потребность в типе данных, который не предопределен в библиотеке C, он создает свой собственный.
1. СТРУКТУРА
Структура — это определяемый пользователем тип данных в C, где мы можем хранить значения нескольких типов данных.
Например, если вы хотите хранить информацию о студентах колледжа, где у каждого студента будет имя, номер броска и оценки. Но совместное управление данными одного учащегося (строка, целое число и переменная с плавающей запятой) для учащегося невозможно ни с одним из типов данных, которые мы обсуждали до сих пор. Теперь для этого мы используем другой тип данных, известный как структура.
Допустим, я создаю структуру учеников с такими полями, как имя, номер списка и оценки. Теперь для каждого ученика я могу создать переменную структуры, в которой будут храниться данные этого конкретного ученика. И я могу получить к нему доступ, когда захочу.
2. UNION
Union очень похож на структуру, так как он также используется для хранения значений нескольких типов данных.
Единственная разница между структурой и объединением заключается в том, что в объединении выделение пространства равно максимальному объему памяти, требуемому типом данных.
Предположим, у нас есть две переменные, одна типа float (4 байта) и одна типа char (1 байт). Теперь для структуры потребуется 5 байт памяти (4 байта с плавающей запятой в 1 байте char), а для объединения потребуется 4 байта (4 байта с плавающей запятой, что является максимальным среди всех переменных).
3. TYPEDEF
Это ключевое слово, присутствующее в C, которое используется для присвоения нового имени любому типу данных.
Например, иногда утомительно вводить полное имя типа данных, теперь вы можете указать короткое имя, используя typedef, т. е. если вы хотите записать unsigned long int в краткой форме как INT, то вы можете использовать typedef как:
typedef unsigned long int ul; ул i1, i2;
4. ENUM
Enum — это определяемый пользователем тип данных, который используется для того, чтобы сделать программу более читабельной и понятной. Он используется для присвоения текстовых значений целочисленным значениям.
Он в основном использует метод индексации и присваивает текстовые значения соответствующему значению индекса.
На приведенном ниже рисунке 0 будет присвоено январю, 1 — февралю, 3 — апрелю и так далее.
ВЫВОД:
2. ПРОИЗВОДНЫЕ ТИПЫ ДАННЫХ
Производные типы данных — это типы данных, которые формируются путем объединения одного или нескольких примитивных типов данных или базовых типов данных в C. Например, могут быть некоторые случаи, когда примитивных типов данных нам недостаточно. Например, если мы хотим сохранить номер телефона, мы можем использовать целое число, но что, если мы хотим сохранить номера телефонов всех студентов в колледже. Создание переменных для каждого из них не является оптимальным способом.
Чтобы оптимально справляться с такими ситуациями, в C есть несколько производных типов данных, которые мы можем использовать по своему усмотрению.
- МАССИВ
- СТРОКА
- УКАЗАТЕЛЬ
- ФУНКЦИИ
1. МАССИВ
Массив — производный тип данных, который используется для хранения данных того же типа в непрерывной области памяти. Мы можем хранить любые типы данных, начиная от int, float, double, char и заканчивая указателем, строкой и структурой. То есть мы можем сделать массив примитивных, пользовательских или производных типов данных.
Массив обеспечивает произвольный доступ, то есть мы можем получить значение любого элемента массива, используя значение его индекса.
Например, если вы хотите сохранить все свои оценки. Вы можете использовать целочисленный массив. И затем вы можете получить доступ к своим оценкам, просто используя его индекс. Давайте разберемся с этим через код. (Если внимательно следить за кодом, доступ к элементу с индексом i осуществляется с помощью arr[i])
Output
Мы также можем создать массив структур.
Ввод
Вывод
2. СТРОКА
Строка представляет собой массив символов. Разница между обычным массивом символов и строкой заключается в том, что строка содержит значение «\0» в конце, указывающее, что это конец строки, в то время как в простом массиве символов это не требуется.
‘\0’ — это специальный символ, известный как символ NULL, который используется для обозначения завершения строки.
В C существует множество способов инициализировать строку.
На изображении, показанном выше, вы можете видеть, как символы хранятся внутри строки. Да, это соответствует свойству индексирования массива, поэтому строка также известна как массив символов. Обратите внимание на «\0» (NULL) в конце строки. Это означает конец строки.Вывод
Мы можем просмотреть каждый символ строки, используя его длину или используя ‘\0’. Посмотрим как:
Выход
3. УКАЗАТЕЛЬ
Указатель — это особый тип данных. Он уникален тем, что, в отличие от других типов данных, не хранит нормальные значения в переменных. Вместо этого переменная-указатель хранит адрес памяти определенного места в памяти компьютера. Указатели также считаются типом переменных и требуют выделения памяти для хранения своих значений. Размер памяти, выделяемой указателю, определяется архитектурой компьютера и используемой операционной системой. В 32-битной системе размер указателя обычно составляет 4 байта, а в 64-битной системе размер указателя обычно составляет 8 байт. Важно отметить, что тип данных указателя всегда совпадает с типом данных переменной, адрес которой он хранит.
Теперь небольшой вопрос к вам, ребята: почему все указатели имеют одинаковый размер? Ответ скрыт в обсуждении выше. Если вы не поняли, просто перечитайте!!
Теперь мы можем выполнять две основные операции с помощью указателей. Во-первых, мы можем сохранить адрес переменной, что называется инициализацией, а во-вторых, мы можем получить значение по этому адресу, что называется разыменованием. «&» используется для инициализации, а «*» — для разыменования.
Теперь давайте посмотрим, как это реализовано на самом деле. Ниже приведен простой код для увеличения значения целого числа с помощью переменной-указателя.
Вы также можете понять эту концепцию из графического изображения, приведенного ниже.
4. ФУНКЦИИ
Функции в C или любом другом языке программирования относятся к набору инструкций, которые при выполнении в заданном порядке выполняют определенную задачу. Задание может быть таким, как поиск максимального элемента, сортировка элементов, перестановка элементов и т. д.
Давайте рассмотрим сценарий, в котором вы хотите подсчитать общие оценки всех учащихся. Теперь писать код сложения каждый раз для каждого ученика — не оптимальный путь. Существует ли какой-либо способ, с помощью которого мы просто должны написать код добавления один раз и можем использовать его в любое время, когда захотим?? Ответ ДА!!!
Чтобы справиться с подобными ситуациями, мы используем функцию, которая выполняет желаемую задачу для пользователя (в данном случае функция суммирования).
В каждой программе на C есть функция main, все остальные функции объявлены только там.
Помимо основной функции, пользователь сам решает, сколько функций он хочет добавить.
Объявление функции на C
Ниже приведен код суммы двух чисел, введенных пользователем:
Вывод
В двух словах, тип данных используется для определения типа данных, которые содержит переменная. Это может быть примитивный (простой) тип, такой как целое число, символ, число с плавающей запятой или вторичный (немного сложный), такой как структура, объединение, массив, указатель и т. д.
Мы можем использовать любой предопределенный тип данных, как того требует наша программа, или мы можем просто создайте свой собственный тип данных (массив, структура, объединение), если мы не найдем подходящего предопределенного типа данных.
Теперь мы почти обсудили все типы данных, которые вам потребуются во время вашего путешествия по программированию на языке C. Вам может показаться ошеломляющим узнать о стольких типах данных. Но очень важно знать об этих типах данных.
И когда вы начнете их использовать, вам станет удобнее.
Заключение
В этой статье мы узнали:
- Различные категории, по которым мы можем различать типы данных, то есть первичные и вторичные.
- Мы разобрались с различными первичными типами данных, включая целое число, символ, число с плавающей запятой, пустоту.
- Мы также узнали, как использовать вторичные типы данных, такие как пользовательские типы данных и производные типы данных.
Базовые типы данных языка C и их размеры
Дом » язык программирования С
Типы данных определяют размер и тип значений, которые будут храниться в памяти компьютера. Основные типы данных также известны как «примитивные типы данных» вот несколько основных типов данных с их размерами на языке C:
- символ
- между
- поплавок
1) char
char представляет символ , его можно использовать для объявления переменной символьного типа, константы в языке C. Требуется всего один байт (8 бит) в памяти компьютера и хранит один символ. Диапазон значений типа данных char составляет от от -128 до +127 .
объявление переменной ‘char’
пол char; /* для хранения пола*/
объявление константы ‘char’
const char IS_MARRIED= 'N'; /*для хранения, семейное положение как "Нет"*/
2) int
int представляет целое число , его можно использовать для объявления переменной целочисленного типа, константы в языке C. Требуется либо 2 байта (16 бит) или 4 байта (32 бита) в зависимости от архитектуры компилятора в памяти компьютера. Он хранит только целые числа (числа без точности). Диапазон значений 2-байтового целого числа составляет от -32 768 до +32 767 и 4 байта целого числа составляет от -21474836478 до +21474836477 .
объявление переменной ‘int’
число int; /*для хранения любого целого числа*/
объявление константы ‘int’
const int MAX_LENGTH=100; /*сохранить максимальную длину как 100*/
3) float
float представляет значение типа float одинарной точности, его можно использовать для объявления переменной типа float, константы на языке C. Занимает 4 байта (32 бита) в памяти компьютера. Диапазон значений типа данных float: от 1.2E-38 до 3.4E+38 с 6 знаками после запятой .
объявление переменной ‘float’
вес с плавающей запятой; /*для хранения веса в килограммах и граммах*/
объявление константы ‘float’
const float PI=3.14f; /*для хранения значения PI как 3.14*/
Это базовые/примитивные типы данных в языке C, есть и другие типы данных, они являются расширенной версией этих типов данных, используя некоторые квалификаторы , мы можем изменить их емкость хранения и диапазон значений, некоторые из наиболее полезных квалификаторов:
- без знака
- короткий
- длинный
A) без знака
Рассмотреть данное объявление
значение символа;
Здесь значение — это переменная типа со знаком char, и она может хранить значение от -128 до +127 , но если у нас есть только положительные значения, мы можем определить значение как беззнаковый char.
unsigned определяет, что переменная будет хранить только положительные значения, а диапазон значений переменной беззнакового типа: от 0 до ((MAX_RANGE*2)+1) .
unsigned char — от 0 до 255
unsigned int — от 0 до 65 535 (для 2-байтового целого числа)
беззнаковое целое — от 0 до 4294967295 (для 4-байтового целого числа)
B) короткая
короткая также может быть записана как короткая целая, она занимает 2 байта (16 бит) в памяти компьютера и ее диапазон значений составляет от -32 768 до +32767 (что аналогично 2 байтам целое тип данных).