[ჸჸCPP]2.기기기기기기기기기기기기
14291 ワード
Created: June 6, 2021 11:22 AM
Tag: constants, data type, floating point
Data type
タイプリストSizeCharacter typeschar 1 bytechar 16 t 2 byteschar 32 t 4 byteswchar tltargetオーバーラン文字セットInteger types(署名済み)1バイト(署名済み)2バイト(ほとんどが4バイト(署名済み)4バイト(署名済み)4バイト(署名済み)長(署名なし)8バイトInteger types(署名なし)符号なしlong(int)符号なしlong long(int)浮動小数点タイプsfloat 4バイト(大部分4バイト)ダブル8バイト(大部分8バイト)long double 8バイト(大部分8、12、16バイト)Boolean typeboolVoid typevoidno storageNull pointeclType(nullptr)
💡 標準では、資料型の最大値ではなく、最小値が表記されています.これは、コンパイラ、オペレーティングシステム、プラットフォームによってデータ型のサイズが可変であるためです.
💡 データ型のサイズを考慮すると、
オートデータ型
変数を宣言する3つの方法
データ型ごとに表現できる数値範囲
プラットフォーム、コンパイラなどによってデータ量が異なる(不確実性)問題を解決するために使用されます.マルチプラットフォーム開発に使用します.
c-style casting
💡 `<< endl;`バッファの内容を無条件に出力して改行します`.n`は、バッファに文字が含まれて出力できない場合があります.
「std::flush」を使用して、改行せずにバッファ内の内容を無条件に出力することもできます.
2.8文字定数の値を決定するには、カーソルを移動してマクロを待つ必要があります. プリプロセッサの使用は、 を理由に定数の代わりに適切な理由がないマクロの使用は避けるべきです!
Tag: constants, data type, floating point
Data type
タイプリストSizeCharacter typeschar 1 bytechar 16 t 2 byteschar 32 t 4 byteswchar tltargetオーバーラン文字セットInteger types(署名済み)1バイト(署名済み)2バイト(ほとんどが4バイト(署名済み)4バイト(署名済み)4バイト(署名済み)長(署名なし)8バイトInteger types(署名なし)符号なしlong(int)符号なしlong long(int)浮動小数点タイプsfloat 4バイト(大部分4バイト)ダブル8バイト(大部分8バイト)long double 8バイト(大部分8、12、16バイト)Boolean typeboolVoid typevoidno storageNull pointeclType(nullptr)
💡 標準では、資料型の最大値ではなく、最小値が表記されています.これは、コンパイラ、オペレーティングシステム、プラットフォームによってデータ型のサイズが可変であるためです.
💡 データ型のサイズを考慮すると、
signed
を使用できるコードでunsigned
を使用することは望ましくない.オートデータ型
auto val1 = 3.141592; // 자동으로 double로 초기화
auto val2 = 3.141592f; // 자동으로 float로 초기화
2.1基本資料型紹介基本データ型変数を宣言する3つの方法
int a = 123; // copy init
int a(123); // direct init
int b{23}; // uniform init // 엄격한 초기화; 자료형에 따라 컴파일 에러 발생
2.2整数型データ型ごとに表現できる数値範囲
#include <iostream>
#include <math>
using namespace std;
cout << numeric_limits<char>::max() << endl;
cout << numeric_limits<char>::min() << endl;
cout << numeric_limits<char>::lowest() << endl;
2.3 C++11固定幅整数固定幅整数プラットフォーム、コンパイラなどによってデータ量が異なる(不確実性)問題を解決するために使用されます.マルチプラットフォーム開発に使用します.
using namespace std;
int16_t int_1(5); // 2bytes
int8_t int_2 = 65; // 1byte
int_fast8_t fi(5); // fatest 1byte
int_least64_t fl(5); // at leaset 8bytes
2.5浮動小数点数using namespace std;
float f(3.14);
double d(3.14);
long double ld(3.14); // 가장 정밀한 표현
cout << sizeof(f) << endl;
cout << sizeof(d) << endl;
cout << sizeof(ld) << endl;
cout << numeric_limits<float>::lowest() << endl;
cout << numeric_limits<double>::lowest() << endl;
cout << numeric_limits<long double>::lowest() << endl;
d = 0.1;
cout << setprecision(17) << endl;
cout << d << endl; // 0.10000000000000001 표현의 한계
かがくてきマーキングほうusing namespace std;
cout << 3.14 << endl;
cout << 31.3e-1 << endl;
cout << 31.4e-2 << endl;
cout << 31.4e1 << endl;
cout << 31.4e2 << endl;
2.7文字型文字c-style casting
cout << (char)65 << endl;
cout << (int)'A' << endl;
cpp-style castingcout << static_cast<char>(65) << endl;
cout << static_cast<int>('A') << endl; // casting을 해도 원래의 값이 바뀌는것은 아니다!
<< enld;「n」との違い💡 `<< endl;`バッファの内容を無条件に出力して改行します`.n`は、バッファに文字が含まれて出力できない場合があります.
「std::flush」を使用して、改行せずにバッファ内の内容を無条件に出力することもできます.
2.8文字定数
int x = 012; // 8진수 octal
int x = 0b1000'1000'1000'1000; // '를 사용하여 가독성을 높일 수 있다 // 2진수 binary
int x = 0xF; // 16진수 // hexadecimal
2.9符号定数const double gravity(9.8);
double const gravity(9.8); // 변수 선언시에는 순서 상관 없다
gravity = 1.2; // error
constexpr int special_nbr(123); // constexpr: runtime에 값이 반드시 결정되어야 하는 변수
置換定数マクロ#define PRICE_PER_ITEM 30
int num_item = 123;
int price = num_item * PRICE_PER_ITEM;
.cpp
ファイル全体に影響します.→適用範囲が広すぎる.Reference
この問題について([ჸჸCPP]2.기기기기기기기기기기기기), 我々は、より多くの情報をここで見つけました https://velog.io/@sshin/CPP-2-52nwb7zuテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol