C++ 基礎チュートリアル (1)

C++ 初級チュートリアル

1. C++ の概要

C++ (c plus plus) は、 C 言語の拡張とアップグレードによって作成された高級コンピュータ プログラミング言語で、 1979 年にAT&T Bell Studios のBenjani Stroustruppによって初めて開発されました。

C++では、C言語の手続き型プログラミングだけでなく抽象データ型を特徴とするオブジェクトベースのプログラミングや、継承やポリモーフィズムを特徴とするオブジェクト指向プログラミングも実行できます。C++ はオブジェクト指向プログラミングに優れていますが、プロセスベースのプログラミングも実行できます。C++ は、ゲーム、デバイス ドライバーHPCクラウドデスクトップ組み込みおよびモバイル アプリケーションなど、ほぼあらゆる種類のプログラムを作成できます。他のプログラミング言語のライブラリやコンパイラも C++ で書かれています。

C++ はコンピュータ操作の実用的な特性を備えており、大規模プログラムのプログラミング品質やプログラミング言語の問題記述能力の向上にも力を入れています。

2. C++の使用

C++ 言語は、次のような多くの業界や分野で広く使用されています。

  • ゲーム開発: C++ は、効率的なパフォーマンスとハードウェアを直接制御できる機能により、ゲーム開発の分野で最もよく使用されるプログラミング言語の 1 つです。Unreal Engine や Unity などの主要なゲーム エンジンの多くは C++ で書かれています。
  • 組み込みシステム開発: C++ は、スマートフォン、自動車、ロボット、家電製品などの組み込みシステムで重要な役割を果たします。組み込みシステムには厳しいリソース制約とリアルタイム要件があることが多いため、C++ の効率的なパフォーマンスとメモリ制御機能は非常に役立ちます。
  • 金融分野: C++ は、高頻度取引、アルゴリズム取引、リスク管理などの金融分野で広く使用されています。これらのアプリケーションは効率的なパフォーマンスとハードウェアの直接制御を必要とするため、C++ 言語が適しています。
  • グラフィックスおよび画像処理: C++ は、コンピューター ビジョン、コンピューター グラフィックス、人工知能などのグラフィックスおよび画像処理アプリケーションの開発に使用できます。これらのアプリケーションは効率的な計算能力とハードウェアの制御を必要とするため、C++ が適切な選択となります。
  • 科学計算と数値解析: C++ は、数値シミュレーションやハイパフォーマンス コンピューティングなどの科学計算および数値解析アプリケーションの開発に使用できます。これらのアプリケーションは効率的な計算能力とハードウェアの直接制御を必要とするため、C++ 言語が適しています。

3. Hello world を出力します。

このチュートリアルのすべてのコードは Dev C++ で実行されます

1. 新しいプロジェクトを作成する

左上隅: ファイル--->>新規--->>プロジェクト、空のプロジェクトC++プロジェクトを選択し、プロジェクト名をday01に設定し、OKをクリックします。
ここに画像の説明を挿入

2. コードを書く

作成したファイルに次のコードを記述します。

#include<iostream>//引入头文件
using namespace std;//命名空间

int main()//主函数
{
    
    
	cout<<"Hello world";//cout用于输出内容到控制台
	return 0;//返回值
}

コードを記述した後、「保存」をクリックしてファイル名を設定します。コードをコンパイルして実行すると (F11)、次の結果が得られます。

Hello world

C言語系のプログラムではヘッダファイルが広く使われています。一般に、すべての C++/ C プログラムは通常、ヘッダー ファイルと定義ファイルで構成されます。関数関数やデータインターフェース宣言を含むキャリアファイルであり、ヘッダファイルは主にプログラムの宣言を保存するために使用され、定義ファイルはプログラムの実装を保存するために使用されます。

ヘッダー ファイルには一般的に使用される関数やメソッドが含まれているため、特定の関数やメソッドを使用する場合は、対応するヘッダー ファイルをインポートする必要があります。

main 関数はC++ プログラムのエントリ ポイントであり、すべての関数とメソッドは main 関数を通じて実行する必要があります。main 関数も固有であり、プログラムには main 関数を 1 つだけ指定できます。複数の main 関数を同時に定義するとエラーが報告されます。

ネームスペースは、その中の識別子 (型、関数、変数などの名前) のスコープを提供する宣言的な領域です。名前空間は、コードを論理グループに編成するため、また、特に基本コードに複数のライブラリが含まれる場合に名前の競合を避けるために使用されます。名前空間スコープ内のすべての識別子は、制限なく相互に参照できます。ネームスペース外の識別子は、std::vector<std::string> vec;各識別子の完全修飾名 (たとえば)、単一の識別子の using 宣言、またはネームスペース内のすべての識別子の using ディレクティブ ( ) を使用してメンバーにアクセスできますusing namespace std;ヘッダー ファイル内のコードでは、常に完全修飾名前空間名を使用する必要があります。

4. C++ キーワード

アズム それ以外 新しい これ
自動 列挙型 オペレーター 投げる
ブール 明示的な プライベート 真実
壊す 輸出 保護された 試す
場合 外部 公共 typedef
キャッチ 間違い 登録 タイプID
文字 浮く 再解釈_キャスト タイプ名
クラス ために 戻る 連合
定数 友人 短い 署名されていない
const_cast 後藤 署名済み を使用して
続く もしも のサイズ バーチャル
デフォルト 列をなして 静的 空所
消去 整数 static_cast 揮発性の
する 長さ 構造体 wchar_t
ダブル 可変 スイッチ その間
ダイナミックキャスト 名前空間 レンプレート

5. C++ 識別子

C++ 識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義項目を識別するために使用される名前です。識別子は、文字 A ~ Z、a ~ z、またはアンダースコア _ で始まり、その後に 0 個以上の文字、アンダースコア、および数字 (0 ~ 9) が続きます。

注:識別子は数字で始めることはできず、アンダースコア (_) 以外の他の特殊記号を含めることはできません。また、予約語 (キーワード) を定数名、変数名、またはその他の識別子名として使用することはできません

@、&、% などの句読点文字は C++ 識別子内では使用できません。C++ は大文字と小文字を区別するプログラミング言語です。したがって、C++ では、Manpmanpは 2 つの異なる識別子です。

6. C++ に関する注意事項

プログラム コメントは、ソース コードの読みやすさを向上させるために C++ コードに含めることができる説明文です。すべてのプログラミング言語では、何らかの形式のコメントが許可されています。プログラムの実行中はコメントは実行されず、コメント内のすべての文字は C++ コンパイラによって無視されます。

C++ は、単一行のコメントと複数行のコメントをサポートします。C++ コメントには通常、次の 2 種類があります。

  • // : 通常、単一行のコメントに使用されます。
  • /*** … */** : 通常、複数行のコメントに使用されます。

コメントは//で始まり、行の終わりまで続きます。例えば:

#include <iostream>
using namespace std;
 
int main() {
    
    
  	// 这是单行注释
    /*
    这是多行注释
    */
  cout << "Hello World!";
  return 0;
}

7 つの C++ データ型

C++ は、プログラマに豊富な組み込みデータ型とユーザー定義データ型を提供します。次の表に、7 つの基本的な C++ データ型を示します。

タイプ キーワード
ブール値 ブール
文字タイプ 文字
整数 整数
浮動小数点 浮く
二重浮動小数点 ダブル

各データ型の具体的な違いについては、次のコンテンツで説明します。

8. C++ の変数

変数は実際には、プログラムが操作できるメモリ領域の名前にすぎません。C++ の各変数には指定された型があり、これによって変数の格納場所のサイズとレイアウトが決まり、この範囲内の値をメモリに格納したり、変数に演算子を適用したりできます。

1. 変数の命名規則

変数名には、文字、数字、アンダースコア文字を使用できます。文字またはアンダースコアで始める必要があります。C++ では大文字と小文字が区別されるため、大文字と小文字は異なります。

2. 変数の定義

形式: データ型変数名、例:

int a;

複数の変数を同時に定義することもできます。たとえば、「,」を使用して変数名を区切ります。

double a,b,c;
char c1,c2;

3. 初期化

初期化、つまり変数に値を代入することです。

代入には「=」を使用しますが、この記号は等価ではなく、代入文字であることに注意してください。

例えば:

//定义变量
int a,b,c;
//初始化变量
a = 1;
b = 2;
c = 3;

同時に、変数を定義するときに値を直接割り当てることもできます。例えば:

//定义变量并直接赋值
int a=1;
int b=2;
//一行中定义多个变量并赋值
double c=1.1,d=2.5,e=3.3;

注:変数は、操作に参加する前に初期化する必要があります

9. C++ の演算子

1. 算術演算子

オペレーター 説明
+ 2 つのオペランドを追加します
- 最初のオペランドから 2 番目のオペランドを減算します
* 2 つのオペランドを乗算します
/ 2 つのオペランドを除算します
% モジュロ (剰余) 演算子、除算後の剰余
++ インクリメント演算子、整数値を 1 ずつインクリメントします
デクリメント演算子。整数値を 1 ずつデクリメントします。

例えば:

int a=2,b=3,c=4;
cout<<a+b;// 2+3=5
cout<<a-b;// 2-3=-1
cout<<a*b;// 2*3=6
cout<<a/b;// a/b=0
cout<<a%b;// a%b=2

注: C++ では、2 つの整数を除算すると、結果も整数になります(結果は四捨五入されますが、注意は四捨五入されません)。

既存のコードは次のとおりです。

#include<iostream>
using namespace std;

int main()
{
    
    
	int a=2,b=3;
	cout<<a++<<" "<<--b;
	return 0;
}

出力は次のとおりです。

2 2

どうしてこれなの?

C++ では、セルフインクリメント演算子とセルフデクリメント演算子の演算ロジックは演算子の位置に関係します。つまり、a++ と ++a で得られる結果は異なります。運用ロジックは何ですか?

演算子が変数の前にある場合は、まず変数をインクリメントまたはデクリメントしてから、他の演算を実行する必要があります。演算子が変数の後にある場合は、最初に他の演算を実行してから、変数をインクリメントまたはデクリメントする必要があります。これが、 a++ の最終出力が 2 になる理由です

例えば、以下のような例があります。

#include<iostream>
using namespace std;

int main()
{
    
    
	int a=2,b=3,c=3,d=2;
	cout<<a++<<" "<<--b<<" "<<++c<<" "<<d--;
	return 0;
}

結果は次のとおりです。

2 2 4 2

分析: a++ 演算子は後ろにあり、最初に演算してからインクリメントするため、出力結果は 2 になります。自己インクリメントしてから演算するため、出力結果は 4 になります。d- 演算子は後で、最初の演算、次に自己デクリメントされるため、出力結果は 2 になります。

自己インクリメント演算子と自己デクリメント演算子が複雑な式に関与する場合も、上記の原則に従います。

2. 関係演算子

オペレーター 説明
== 2 つのオペランドの値が等しいかどうかを確認し、等しい場合は条件が true になります。
!= 2 つのオペランドの値が等しいかどうかを確認し、等しくない場合は条件が true になります。
> 左側のオペランドの値が右側のオペランドの値より大きいかどうかを確認し、大きい場合は条件が true になります。
< 左のオペランドの値が右のオペランドの値より小さいかどうかを確認し、はいの場合は条件が true になります。
>= 左のオペランドの値が右のオペランドの値以上であるかどうかを確認し、そうであれば条件が true になります。
<= 左のオペランドの値が右のオペランドの値以下であるかどうかを確認し、はいの場合は条件が true になります。

関係演算子は変数または式の大小を比較するために使用され、式の結果はブール値、つまり true または false になります。

例えば:

#include<iostream>
using namespace std;

int main()
{
    
    
	int a=2,b=3;
	bool f1 = a>b;
	bool f2 = a<b;
	bool f3 = a==b;
	bool f4 = a!=b;
	bool f5 = a<=b;
	bool f6 = a>=b;
	cout<<f1<<" "<<f2<<" "<<f3<<" "<<f4<<" "<<f5<<" "<<f6;
	return 0;
}

結果は次のとおりです。

0 1 0 1 1 0 

0 は偽、1 は真です。

3. 論理演算子

オペレーター 説明
&& 論理積演算子と呼ばれます。両方のオペランドが true の場合、条件は true になります。
|| 称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。

有如下代码:

#include<iostream>
using namespace std;

int main()
{
    
    
	int a=0,b=1;
	bool f1 = a&&b;
	bool f2 = a||b;
	bool f3 = !a;
	cout<<f1<<" "<<f2<<" "<<f3;
	return 0;
}

结果为:

0 1 1

4、赋值运算符

运算符 描述 实例
= 简单的赋值运算符,把右边操作数的值赋给左边操作数 C = A + B 将把 A + B 的值赋给 C
+= 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 C += A 相当于 C = C + A
-= 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 C -= A 相当于 C = C - A
*= 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 C *= A 相当于 C = C * A
/= 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 C /= A 相当于 C = C / A
%= 求模且赋值运算符,求两个操作数的模赋值给左边操作数 C %= A 相当于 C = C % A

例如,有如下代码:

#include<iostream>
using namespace std;

int main()
{
    
    
	int a=2,b=3,c=4,d=5,e=6,f=7;
	a+=b; // a=a+b
	b-=c; // b=b-c
	c*=d; // c=c*d
	d/=e; // d=d/e
	e%=f; // e=e%f
	cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f;
	return 0;
}

结果为:

5 -1 20 0 6 7

5、C++ 中的运算符优先级

运算符的优先级确定表达式中项的组合,这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

类别 运算符 结合性
后缀 () [] -> . ++ - - 从左到右
一元 + - ! ~ ++ - - (type)* & sizeof 从右到左
乘除 * / % 从左到右
加减 + - 从左到右
移位 << >> 从左到右
关系 < <= > >= 从左到右
相等 == != 从左到右
位与 AND & 从左到右
位异或 XOR ^ 从左到右
位或 OR | 从左到右
逻辑与 AND && 左から右へ
論理和 || 左から右へ
状態 ?: 右から左へ
割り当て = += -= *= /= %=>>= <<= &= ^= |= 右から左へ
コンマ 左から右へ

複雑な式では、複数の異なる演算子が同時に関与する場合がありますが、このとき演算子の優先順位を考慮し、優先順位に従って最終結果を計算する必要があります。例えば:

#include<iostream>
using namespace std;

int main()
{
    
    
	int a=2,b=3,c=4,d=5,e=6,f=7;
	int g=a*b+c%f+(++d>=e&&e<f)-f++;
	cout<<g;
	return 0;
}

結果は次のとおりです。

4

おすすめ

転載: blog.csdn.net/qq_43884946/article/details/129642329