Содержание

Типы данных CPP

Тип данных C++ - понятие, определяющее максимальный размер (в байтах) и тип информации, которая будет использоваться программой.

Что бы что-либо хранить (в частности данные) необходимо иметь хранилище. Для нашей программы таким хранилищем будет оперативная память. Прежде чем что-то где-то разместить, необходимо подобрать подходящую упаковку. Скажем, Вы вряд ли станете наливать молоко в спичечный коробок. В программировании, перед тем, как разместить информацию в оперативной памяти, Вы обязательно должны определить характер этой информации.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
// вывести размер в байтах типа даннных для вашего компилятора
int main()
{
   cout<<sizeof(int)<<" int\n";
   cout<<sizeof(char)<<" char\n";
   cout<<sizeof(long long int)<<" long long int\n";
}

Символьный тип

Тип предназначен для хранения только одного символа. Типа для хранения строк в С не существует. Строки и текст хранятся в Массивах char.

Как хранится юникод UTF8 UTF16? если char всего 1 байт?

Пояснение Тип Размер в байтахДиапазон значений
описывает символы char1от -128 до 127
описывает символы unsigned char1от 0 до 255
коды, превышающие 127, - от 128 до 255 - называются расширенными ASCII: Расшифровка аббревиатуры, история и применение -кодами.

В одинарные кавычки заключается отдельный символ, который присваивается переменной. Например:

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char** argv) {

    char c1='a'; // маленькая буква a
    char c2='\x61'; // маленькая буква a в шестнадцатеричном виде ASCII
    char c3='\t'; // символ табуляции <Tab>
    char promt[]="Использование двойных кавычек";

    printf ("%c\n",c1);
    printf ("%c\n",c2);
    printf ("%c\n",c3);
    
    return (EXIT_SUCCESS);
}

То есть отдельный символ может может быть представлен в шестнадцатеричном виде (ASCII: Расшифровка аббревиатуры, история и применение), Escape-последовательности-последовательности и как обычный символ.

Логический тип

Тип предназначен для хранения логических данных. Логические данные могу принимать одно из двух значений: истина (true)(любое отлчиное от нуля значение) либо ложь (false)=0.

Пояснение Тип Размер в байтах Значения
описывает логические значения bool 1 true false

Дата и время

Рекомендуют хранить в timestamp.

Числовые типы

Числа, как известно, бывают целые и вещественные. Вещественные числа мы будем называть числа с плавающей точкой.

Целые числа

Пояснение Тип Размер в байтах Диапазон значений
описывает целые числа int 4 от -2147483648 до 2147483647
описывает короткие целые числа short 2 от -32768 до 32767
описывает длинные целые числа long 4 от -2147483648 до 2147483647
целое число без знака unsigned int4 от 0 до 4 294 967 295
целое число без знака unsigned short4 от 0 до 65 535
целое число без знака unsigned long4 от 0 до 4 294 967 295
описывает целые числа long long int8 от

Вещественные числа (числа с плавающей точкой). Что такое точность?

Вещественные числа мы будем называть числа с плавающей точкой.

Пояснение Тип Размер в байтахДиапазон значений
описывает вещественные числа одинарной точности float 4Числа с плавающей точкой типа float могут менятся от -3,4×10 в степени 38 до 3,4×10 в степени 38. Значения от –3,4×-38 до 3,4×10-38 считаются равными нулю.
описывает вещественные числа двойной точности double 8
Из-за большей точности тип данных float(точность 7) используется в 3D графике, а не double(точность 15). Я думаю все же не из-за точности, а из-за того что float обрабатывается быстрее, так как выделяемая память меньше, чем для double.
Для float можно использовать экспотенциальный формат, например объявить переменную так: float x=5.878E12;. Число 5.878E12, означает, что в десятичном числе 5.878 запятая должна быть сдвинута вправо на 12 позиций.

В математике точность определяется количеством цифр, которые представляют число.

Термин точность относится к десятичным числам, дробям, - и очень маленьким, и огромным числам, - хранящимся на компьютере. Чтобы хранить информацию компьютер использует только единицы и нули. Для целых чисел этого вполне достаточно. Для нецелых чисел это означает, что имеет место некоторый обман. Этот обман в начале незаметен, но точность результатов уменьшается, они становятся "нечеткими" через некоторое время, особенно в последних цифрах.

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char** argv) {

    float d1=123.4567891234;
    float d2=123.45678422231;

    printf ("%f\n",d1);
    printf ("%f\n",d2);

    return (EXIT_SUCCESS);
}

Программа выведет:

123.456787
123.456787
Press [Enter] to close the terminal ...

Если число 123.4567891234 в С вы присвоите переменной с плавающей точкой (float), компьютер может сохранить его только как значение с одинарной точностью. В этом случае компьютер может сохранить только первые 8 цифр. Остальные он отбросит!

Первые восемь цифр точны, причем они совпадают у обоих чисел. После этих восьми цифр значения различаются. Вот у чему в действительности приводит одинарная точность. Двойная точность может позволить хранить в точности 12 или 16 десятичных знаков (но последующие знаки также не определены).

Если с помощью компьютера нужно выполнить вычисления над операндами с плавающей точкой, помните, что число может быть представлено только с определенной точностью.
Чем больше точность, тем дольше компьютер обрабатывает числа. Не используйте точность большую, чем необходимо.