Тип данных 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 байт?
Пояснение | Тип | Размер в байтах | Диапазон значений |
описывает символы | char | 1 | от -128 до 127 |
описывает символы | unsigned char | 1 | от 0 до 255 |
В одинарные кавычки заключается отдельный символ, который присваивается переменной. Например:
#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 int | 4 | от 0 до 4 294 967 295 |
целое число без знака | unsigned short | 4 | от 0 до 65 535 |
целое число без знака | unsigned long | 4 | от 0 до 4 294 967 295 |
описывает целые числа | long long int | 8 | от |
Вещественные числа мы будем называть числа с плавающей точкой.
Пояснение | Тип | Размер в байтах | Диапазон значений |
описывает вещественные числа одинарной точности | float | 4 | Числа с плавающей точкой типа float могут менятся от -3,4×10 в степени 38 до 3,4×10 в степени 38. Значения от –3,4×-38 до 3,4×10-38 считаются равными нулю. |
описывает вещественные числа двойной точности | double | 8 |
В математике точность определяется количеством цифр, которые представляют число.
Термин точность относится к десятичным числам, дробям, - и очень маленьким, и огромным числам, - хранящимся на компьютере. Чтобы хранить информацию компьютер использует только единицы и нули. Для целых чисел этого вполне достаточно. Для нецелых чисел это означает, что имеет место некоторый обман. Этот обман в начале незаметен, но точность результатов уменьшается, они становятся "нечеткими" через некоторое время, особенно в последних цифрах.
#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 десятичных знаков (но последующие знаки также не определены).