Типы данных C++

Преобразование данных

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


#include <iostream>             // stoi, stol, stoll, stof, stod
using namespace std;
int main(){
    string str = "12";          // "12"
    int i = stoi(str);          // string to int
    long L = stol(str);         // string to long
    long long LL = stoll(str);  // string to long long
    float f = stof("3.14f");    // string to float
    double d = stod("3.14");    // string to double
    str = to_string(23);        // int to string
    str = to_string(3.14f);     // float to string
    str = to_string(3.14);      // double to string
}

Считается дурным тоном, особенно для встраиваемых систем, использовать char или unsigned char в качестве целочисленных типов размером с байт и предпочитают использовать типы int8_t и uint8_t, подобный подход распространяется и на целочисленные типы других размеров (16, 32 и 64 бита).

Для использования целочисленных типов данных (int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t) необходимо подключить С++11 (в make файле или среде разработки) и cstdint (в файле с кодом программы).


QMAKE_CXXFLAGS += -std=c++11
#include <cstdint>
clock_t это long

Диапазон и размер данных


#include <iostream>
#include <limits>
#include <iomanip>
using namespace std;
#define COUT(Ttype, Tname) cout << left << setw(25) << Tname << "min = " << setw(22) << numeric_limits<Ttype>::min() << "max = " << setw(25) << numeric_limits<Ttype>::max()  << sizeof(Ttype) << " byte \n";
#define COUT_CHAR(Ttype, Tname) cout << left << setw(25) << Tname << "min = " << setw(22) << (int)numeric_limits<Ttype>::min() << "max = " << setw(25) << (int)numeric_limits<Ttype>::max()  << sizeof(Ttype) << " byte \n";
int main() {
    COUT(bool, "bool");
    COUT_CHAR(char, "char");
    COUT_CHAR(unsigned char, "unsigned char");
    COUT(short, "short");
    COUT(unsigned short, "unsigned short");
    COUT(int, "int");
    COUT(unsigned int, "unsigned int");
    COUT(long, "long");
    COUT(unsigned long, "unsigned long");
    COUT(long long, "long long");
    COUT(unsigned long long, "unsigned long long");
    COUT(float, "float");
    COUT(double, "double");
}

/* Вывод в консоль
bool                     min = 0                     max = 1                        1 byte
char                     min = -128                  max = 127                      1 byte
unsigned char            min = 0                     max = 255                      1 byte
short                    min = -32768                max = 32767                    2 byte
unsigned short           min = 0                     max = 65535                    2 byte
int                      min = -2147483648           max = 2147483647               4 byte
unsigned int             min = 0                     max = 4294967295               4 byte
long                     min = -2147483648           max = 2147483647               4 byte
unsigned long            min = 0                     max = 4294967295               4 byte
long long                min = -9223372036854775808  max = 9223372036854775807      8 byte
unsigned long long       min = 0                     max = 18446744073709551615     8 byte
float                    min = 1.17549e-38           max = 3.40282e+38              4 byte
double                   min = 2.22507e-308          max = 1.79769e+308             8 byte
*/
2023-10-23



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

char символьный тип данных в С++ длиной 1 байт
char16_t символьный беззнаковый тип данных длиной 16 бит в С++11
char32_t символьный беззнаковый тип данных длиной 32 бит в С++11
char8_t символьный тип данных в С++20
Типы данных C++
double - тип данных для представления вещественных чисел двойной точности
enum перечисление С++
float C++ представление вещественных данных с одинарной точностью
int C++ целочисленный тип данных
Целочисленные типы С++ long и long long
short С++ целочисленный тип данных
signed C++ модификатор знакового целочисленного типа
typedef C++ создание псевдонимов для типов данных
typeid C++ определение типа данных
union C++ объединение переменных разных типов в общей памяти
unsigned С++ беззнаковые числа
void C++ для функций не возвращающих значений или задания пустого указателя
wchar_t С++ расширенный набор символов и строк