Типы данных в CPP
Быстрый старт в С++
Бесплатная небольшая книга, которую не надо читать полгода, но которая покажет вам, что такое С++ и как начать его изучение. А также поможет решить, надо ли вам это вообще. Кроме того, подписавшись на рассылку, вы будете получать от меня полезные материалы по С++, которые я периодически выпускаю... Подробнее... |
С++ - это строго типизированный язык. Это означает, что при объявлении переменных для них обязательно указывать тип данных. Общие сведения о типах данных вы можете получить здесь, а сейчас об основных типах данных в С++.
В С++, особенно в современном, типов данных очень много. Однако широко используются лишь некоторые - они приведены в таблице ниже:
Тип данных | Пример | Описание |
int | -100 | Простые целые числа. Могут быть как положительными, так и отрицательными. |
unsigned int | 100U | Простые целые числа. Могут быть только положительными. |
long | 500L | Изначально задумывался как расширенный тип int. Раньше int занимал два байта, а long - четыре байта, и, соответственно, мог хранить числа большего размера. Но в современных компиляторах, как правило, int и long не имеют отличий. Букву L в конце числа записывать не обязательно. Просто она даёт понять программисту, какой тип имеет константа. |
unsigned long | 500UL | То же, что и long, но может принимать только положительные значения. |
float | 3.14F | Вещественное (действительное) число единичной точности. |
double | 3.14 | Вещественное (действительное) число двойной точности. Стандартное представление чисел с плавающей точкой. По сравнению с float занимает больше памяти. |
char | 'A' | Символьный тип. Может хранить как символы, так и числа в диапазоне -128…127. Но обычно используется для символов. |
string | "Hello, World!" | Строковый тип. Может хранить множество символов. |
bool | true | Логический тип. Имеет только два значения: true и false (ИСТИНА и ЛОЖЬ). Фактически хранит значения 1 и 0 соответственно, а символьные значения true и false используются только для удобства. Вполне допустимо делать, например, так: bool bv = 0; |
Кого-то может удивить то, что стандартным считается число с плавающей точкой двойной точности, а не одинарной. На это есть исторические причины. Они ведут нас в те далёкие времена, когда Билл Гейтс утверждал, что 640 КБ памяти хватит всем и навсегда, а экономия памяти за счёт точности - это хорошая мысль.
Однако современные компьютеры практически не видят разницы - скорость вычислений особо не отличается
при использовании float
и double
, поэтому жертвовать точностью в большинстве случаев особого смысла нет.
А теперь некоторые пояснения…
Во-первых, вы наверняка заметили в примерах буквы после числовых значений. Например, 500L
. Так делать можно, но не обязательно. Я, например, никогда не трачу время на то, чтобы напечатать лишний символ. Хотя в некоторых случаях это может оказаться и полезным.
Во-вторых, объявлять переменные можно, сразу присваивая им значения. Например, так:
string Hello = "Hello, World!"; bool bv = false;
В-третьих, будьте внимательны при работе с неотрицательными числами. Например, если вы напишите такой код:
unsigned int uiv = -100;
то это не будет ошибкой. Компилятор всё проглотит и вы получите программу. Вот только в переменной
uiv
будет не -100
, а что-то вроде 4294967196
. Подробнее
о подобных неприятностях с типами данных я рассказывал здесь.
Также обратите внимание на представление символов и строк. В С++ это отличается:
char ch = 'A'; string Hello = "Hello, World!";
То есть символ заключается в одинарные кавычки, а строка - в двойные. Если вы заключите символ в двойные кавычки, то это будет уже не символ, а строка, состоящая из одного символа. И вот такой код:
char ch = "A";
не скомпилируется, а выдаст ошибку.
Кроме того, тип char
может хранить и числа. Точнее, по сути он числа и хранит - ASCII-коды символов. И, можно, например, сделать так:
char cv = 100;
И это не будет ошибкой. Просто при выводе на экран вы увидите не число, а символ
(в нашем примере латинскую букву d
, потому что 100
- это
ASCII-код этой буквы).
Если же вам надо вывести на экран именно числовое значение, хранящееся в типе char, то можно сделать, например, так:
cout << "cv = " << int(cv);
Ну и напоследок код простенькой программы, которая показывает, как всё вышесказанное можно использовать:
#include <iostream> using namespace std; int main(void) { int iv = -100; unsigned int uiv = -100; long lv = 500L; float fv = 3.14F; double dv = 3.14; char ch = 'A'; char cv = 100; string Hello = "Hello, World!"; bool bv = false; cout << "iv = " << iv << ", uiv = " << uiv << endl; cout << "fv = " << fv << ", dv = " << dv << endl; cout << "ch = " << ch << ", cv = " << cv << endl; cout << "bv = " << bv << endl; cout << Hello << endl; cout << "cv = " << int(cv) << " (" << cv << ")" << endl; }
Как говорится, проверено - работает. А вывод на экран будет таким:
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Все способы изучить С++
Начинающие программисты даже не догадываются о том, какой огромный пласт в этой области скрыт от их глаз, и чего многие из новичков не увидят никогда, потому что это тёмная сторона программирования - чистый исходный код системного уровня… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |