Раздел: Статьи / Язык С++ /

Типы данных в 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;	
}

Как говорится, проверено - работает. А вывод на экран будет таким:

Типы данных в CPP


Все способы изучить С++ Все способы изучить С++

Начинающие программисты даже не догадываются о том, какой огромный пласт в этой области скрыт от их глаз, и чего многие из новичков не увидят никогда, потому что это тёмная сторона программирования - чистый исходный код системного уровня… Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика