C++ 学習への道 (3): 変数

序文

変数は、基本的にすべてのプログラミング言語の基礎であり、プロジェクトが構築される基礎です。
次のコードは、変数を宣言します。

// int就是变量的类型
// num就是变量名
// 0就是num的初始值
int num = 0;

記憶と理解を容易にするために、型と変数名を比較します。

  1. 中に物が入った木箱とイメージできます。クレートは変数名で、アイテムはデータです。
  2. リンゴ、ナシ、バナナなど、木箱にどのようなアイテムが入っているかは、変数の型、int、short、long に対応しています。

1.変数名

C++ 変数名には次の命名規則があります (ここでは、C++ Primer Plus の第 6 版の中国語バージョン 3.1.1 の内容を直接伝えます)。

  1. 名前に使用できるのは、英字、数字、アンダースコア (_) のみです
  2. 名前の最初の文字を数字にすることはできません
  3. 大文字と小文字を区別します (例: int A と int a は 2 つの異なる変数名です)。
  4. C++ キーワードを名前として使用できません
  5. 2 つのアンダースコアまたはアンダースコアと大文字で始まる名前は、実装 (コンパイラとそれが使用するリソース) のために予約されています。アンダースコアで始まる名前は、グローバル識別子として使用するために実装に予約されています。(人間的に言えば、変数名として _time_stop, _Donut のような組み合わせを使用しないのが最善です)
  6. C++ には名前の長さに制限がなく、名前のすべての文字が意味を持ちます。ただし、一部のプラットフォームには長さ制限があります

一般的な変数名は「 my_name」や「myName 」のように書くことができ、私は myName の形で書くことに慣れています。

2. 変数型

C++ の変数の型は何ですか?
基本データ型

// 整型
int,short,long,long long
// 浮点型
float,double,long double
// 字符类型
char
// 布尔类型
bool

列挙型、ポインター、配列、参照、クラスなどの型もありますが、後で順を追って説明します。

2.1 整数

整数には、short、int、long、long long の 4 種類があります。

#include<iostream>

int main() {
    
    
	short var_short = 22;
	int var_int = 123;
	long var_long = 1234l; // 后缀l,表示long
	long long var_long_long = 12345ll; // 后缀ll,表示long long
	return 0;
}

2.1.1 初期化

#include<iostream>

int main() {
    
    
	// 声明一个int类型的变量,但是不初始化
	int var; // 不建议这样做
	
	// 声明一个int类型的变量并且初始化为22
	int var = 22;
	return 0;
}

変数を宣言するには 2 つの方法があり、1 つ目は初期化を行わずに宣言する方法と、2 つ目は宣言して初期化する方法です。最初の方法は使用しないでください。C++ の場合、手動で初期化しないと、変数の値がランダム メモリ データになり、Visual Studio のエラーが直接報告されるためです。

error C4700: 使用了未初始化的局部变量“var”

Java の自動初期化とは異なり、C++ の変数を宣言する場合は、変数を手動で初期化することを忘れないでください。

2.1.2 値の範囲

32 ビット オペレーティング システムでの int、short、long、long long の型の最大値と最小値は? それらはどのくらいのメモリを占有しますか?
整数が占めるサイズについては、C++ Primer Plus 6th edition Chinese version 3.1.3 の内容を参照してください。

  1. 少なくとも 16 ビットを短くする
  2. int は少なくとも short と同じ長さです
  3. long は少なくとも 32 ビット長で、少なくとも int と同じ長さです
  4. long long は少なくとも 64 ビットの長さであり、少なくとも long と同じ長さです

異なるシステムが占有するメモリ サイズは異なるため、現在のシステム タイプが占有するメモリ サイズをどのように知るのでしょうか? sizeof() を使用して、占有されているメモリ サイズを取得できます。

#include<iostream>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	std::cout << sizeof(int) << std::endl;
	std::cout << sizeof(short) << std::endl;
	std::cout << sizeof(long) << std::endl;
	std::cout << sizeof(long long) << std::endl;
	return 0;
}

出力結果:

4
2
4
8

では、最大値と最小値を決定する方法は? また、C++ が提供するツール climits と cstdint (C++11) のマクロ定数を使用して決定することもできます。
参照 API アドレス: C++ 標準ライブラリ ヘッダー ファイル数値制限

#include<iostream>
#include<climits>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	std::cout << "short最小值: " << SHRT_MIN << std::endl;
	std::cout << "short最大值: " << SHRT_MAX << std::endl;
	
	std::cout << "int最小值: " << INT_MIN << std::endl;
	std::cout << "int最大值: " << INT_MAX << std::endl;
	
	std::cout << "long最小值: " << LONG_MIN << std::endl;
	std::cout << "long最大值: " << LONG_MAX << std::endl;
	
	std::cout << "long long最小值: " << LLONG_MIN << std::endl;
	std::cout << "long long最大值: " << LLONG_MAX << std::endl;
	return 0;
}

出力結果:

short最小值: -32768
short最大值: 32767

int最小值: -2147483648
int最大值: 2147483647

long最小值: -2147483648
long最大值: 2147483647

long long最小值: -9223372036854775808
long long最大值: 9223372036854775807

2.1.3 データ型のオーバーフロー

ある種類のデータを使用すると、そのデータ型の最大値または最小値に達しますが、データを増やしたり減らしたりすると、逆の最大値または最小値にデータが到達します。
コードに直接、ナンセンスはありません:

#include<iostream>
#include<climits>

int main() {
    
    
	int max_var = INT_MAX;
	std::cout << "int最大值: " << max_var << std::endl;
	max_var = max_var + 1; // 模拟溢出
	std::cout << "int最大值溢出: " << max_var << std::endl;

	int min_var = INT_MIN;
	std::cout << "int最小值: " << min_var << std::endl;
	min_var = min_var - 1; // 模拟溢出
	std::cout << "int最小值溢出: " << min_var << std::endl;
	return 0;
}

出力:

int最大值: 2147483647
int最大值溢出: -2147483648

int最小值: -2147483648
int最小值溢出: 2147483647

データ型オーバーフローのコードは、オーバーフローを防ぐために基本的なデータ型を扱う際に境界問題の判断を考慮するよう警告しています。

2.1.4 符号なし型

unsigned 型は、int、short、long、long long の 4 つの整数型のうち、short 型などの unsigned 型 unsigned です。

#include<iostream>
#include<climits>

int main() {
    
    
	unsigned short var = USHRT_MAX;
	std::cout << var << std::endl;
	var = var + 1; // 模拟溢出
	std::cout << var << std::endl;
	return 0;
}

出力:

65535
0

元の short 型は -32768 から +32767 です. unsigned 型の short は負の数を犠牲にして正の数のみを取ります. 範囲は​​ 0~65535. unsigned (unsigned) 型は正の数のみを表します.

2.2 浮動小数点

浮動小数点型には主に float、double、long double があります.整数型との違いは小数点があることです.コードは次のようになります.

#include<iostream>
#include<climits>

int main() {
    
    
	float var_f = 1.234f;
	float var0_f = 3.14e+5; // 3.14乘以10000,科学计数法
	double var_d = 2.345;
	long double var_ld = 2.365234;
	std::cout << var0_f << std::endl;
	return 0;
}

2.2.1 値の範囲

#include<iostream>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	std::cout << sizeof(float) << std::endl;
	std::cout << sizeof(double) << std::endl;
	std::cout << sizeof(long double) << std::endl;
	return 0;
}

出力:

4
8
8

2.2.2 最大値と最小値

float、double、long double の最大値と最小値:

#include<iostream>
#include<cfloat>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	std::cout << "float最小值: " << FLT_MIN << std::endl;
	std::cout << "float最大值: " << FLT_MAX << std::endl;

	std::cout << "double最小值: " << DBL_MIN << std::endl;
	std::cout << "double最大值: " << DBL_MAX << std::endl;

	std::cout << "long double最小值: " << LDBL_MIN << std::endl;
	std::cout << "long double最大值: " << LDBL_MAX << std::endl;
	return 0;
}

出力:

float最小值: 1.17549e-38
float最大值: 3.40282e+38
double最小值: 2.22507e-308
double最大值: 1.79769e+308
long double最小值: 2.22507e-308
long double最大值: 1.79769e+308

2.3 文字種

文字型は char で、コードは次のとおりです。

#include<iostream>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	char ch0 = 'a';
	char ch1 = 'A';
	char ch2 = 97;
	char ch3 = 65;
	std::cout << ch0 << std::endl;
	std::cout << ch1 << std::endl;
	std::cout << ch2 << std::endl;
	std::cout << ch3 << std::endl;
	return 0;
}

出力:

a
A
a
A

焦点は ch2 と ch3 で、char データには整数を割り当てることができ、97 と 65 は ASCII で a と A を表します。char 型のこの機能により、char 型を使用する一部のアルゴリズムの問​​題は、足し算と引き算で整数型を使用して解決できます。

#include<iostream>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	char ch = 97;
	for (int i = 0; i <= 25; i++) {
    
    
		std::cout << ch << std::endl;
		ch = ch + 1;
	}
	return 0;
}

2.4 ブール値

ブール型は非常に単純で、2 つの値のみです。0 および非ゼロ。0 は false を表し、非ゼロ (通常は 1) は true を表します。

#include<iostream>

int main() {
    
    
	// windows 10,Visual Studio 2022,Debug模式,x86
	bool flag0 = true;
	std::cout << flag0 << std::endl;
	bool flag1 = false;
	std::cout << flag1 << std::endl;
	return 0;
}

おすすめ

転載: blog.csdn.net/RQ997832/article/details/123817695