[ჸჸ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)
💡 標準では、資料型の最大値ではなく、最小値が表記されています.これは、コンパイラ、オペレーティングシステム、プラットフォームによってデータ型のサイズが可変であるためです.
💡 データ型のサイズを考慮すると、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 casting
cout << 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ファイル全体に影響します.→適用範囲が広すぎる.
  • を理由に定数の代わりに適切な理由がないマクロの使用は避けるべきです!