例 C++ で使用できる算術演算子を理解するには、以下の例を参照してください。 次の C++ プログラムをコピーして test.cpp ファイルに貼り付け、プログラムをコンパイルして実行します。 #include <iostream>
using namespace std;
main()
{
int a = 21;
int b = 10;
int c ;
c = a + b;
cout << "Line 1 - c 的值是 " << c << endl ;
c = a - b;
cout << "Line 2 - c 的值是 " << c << endl ;
c = a * b;
cout << "Line 3 - c 的值是 " << c << endl ;
c = a / b;
cout << "Line 4 - c 的值是 " << c << endl ;
c = a % b;
cout << "Line 5 - c 的值是 " << c << endl ;
c = a++;
cout << "Line 6 - c 的值是 " << c << endl ;
c = a--;
cout << "Line 7 - c 的值是 " << c << endl ;
return 0;
} 上記のコードをコンパイルして実行すると、次の結果が生成されます: Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 21
Line 7 - c 的值是 22 次の表は、C++ でサポートされている関係演算子を示しています。 変数 A の値が 10、変数 B の値が 20 であるとします: Operator | Description | Instance |
---|
== | 2 つの値が一致するかどうかを確認しますオペランドが等しい。等しい場合、条件は true になります。 | (A == B) は真実ではありません。 | != | は、2 つのオペランドの値が等しいかどうかをチェックし、そうでない場合は条件が true です。 | (A != B) は true です。 | > | 左のオペランドの値が右のオペランドの値より大きいかどうかを確認し、大きい場合は条件が true です。 | (A > B) は真実ではありません。 | < | 左のオペランドの値が右のオペランドの値より小さいかどうかを確認し、そうであれば条件は true です。 | (A < B) は true です。 | >= | 左のオペランドの値が右のオペランドの値以上であるかどうかを確認し、そうであれば条件が true です。 | (A >= B) は真実ではありません。 | <= | 左のオペランドの値が右のオペランドの値以下であるかどうかを確認し、そうであれば条件は true です。 | (A <= B) は true です。 |
例 C++ で使用できる関係演算子を理解するには、以下の例を参照してください。 次の C++ プログラムをコピーして test.cpp ファイルに貼り付け、プログラムをコンパイルして実行します。 #include <iostream>
using namespace std;
main()
{
int a = 21;
int b = 10;
int c ;
if( a == b )
{
cout << "Line 1 - a 等于 b" << endl ;
}
else
{
cout << "Line 1 - a 不等于 b" << endl ;
}
if ( a < b )
{
cout << "Line 2 - a 小于 b" << endl ;
}
else
{
cout << "Line 2 - a 不小于 b" << endl ;
}
if ( a > b )
{
cout << "Line 3 - a 大于 b" << endl ;
}
else
{
cout << "Line 3 - a 不大于 b" << endl ;
}
/* 改变 a 和 b 的值 */
a = 5;
b = 20;
if ( a <= b )
{
cout << "Line 4 - a 小于或等于 b" << endl ;
}
if ( b >= a )
{
cout << "Line 5 - b 大于或等于 a" << endl ;
}
return 0;
} 上記のコードをコンパイルして実行すると、次の結果が生成されます: Line 1 - a 不等于 b
Line 2 - a 不小于 b
Line 3 - a 大于 b
Line 4 - a 小于或等于 b
Line 5 - b 大于或等于 a 次の表は、C++ でサポートされている関係論理演算子を示しています。 変数 A の値が 1 で、変数 B の値が 0 であるとします。 Operator | Description | Instance |
---|
&& | は、論理 AND 演算子と呼ばれます。両方のオペランドがゼロ以外の場合、条件は true になります。 | (A && B) は誤りです。 | || | は論理OR演算子と呼ばれます。 2 つのオペランドのいずれかが 0 以外の場合、条件は true になります。 | (A || B) は true です。 | ! | は論理否定演算子と呼ばれます。オペランドの論理状態を反転するために使用されます。論理 NOT 演算子は、条件が true の場合、条件を false にします。 | !(A && B) は true です。 |
例 C++ で使用できる論理演算子を理解するには、以下の例を参照してください。 次の C++ プログラムをコピーして test.cpp ファイルに貼り付け、プログラムをコンパイルして実行します。 #include <iostream>
using namespace std;
main()
{
int a = 5;
int b = 20;
int c ;
if ( a && b )
{
cout << "Line 1 - 条件为真"<< endl ;
}
if ( a || b )
{
cout << "Line 2 - 条件为真"<< endl ;
}
/* 改变 a 和 b 的值 */
a = 0;
b = 10;
if ( a && b )
{
cout << "Line 3 - 条件为真"<< endl ;
}
else
{
cout << "Line 4 - 条件不为真"<< endl ;
}
if ( !(a && b) )
{
cout << "Line 5 - 条件为真"<< endl ;
}
return 0;
} 上記のコードをコンパイルして実行すると、次の結果が生成されます: Line 1 - 条件为真
Line 2 - 条件为真
Line 4 - 条件不为真
Line 5 - 条件为真 ビットごとの演算子はビットに作用し、ビットごとに演算を実行します。 &、| および ^ の真の値は次のとおりです。 0 0 | 0 | 1 | 0 | 1 | 1
---|
| 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | A = 60、B = 13 をバイナリ形式で表すと、次のようになるとします。 | A = 0011 1100 | B = 0000 1101 | ---- ------------- | A&B = 0000 1100A|B = 0011 1101 | A^B = 0011 0001 | ~A = 1100 0011 | 次の表は、C++ を示しています。ビット単位の演算子をサポートします。変数 A の値が 60、変数 B の値が 13 であると仮定すると、次のようになります。 | | Operator Description Instance & 両方のオペランドに同時に存在する場合、バイナリ AND演算文字が結果にコピーされます。 (A & B) は 12 を返します。これは 0000 1100 です | どちらかのオペランドに存在する場合、バイナリ OR 演算子は 1 ビットを結果にコピーします。 (A | B) は、0011 1101 である 61 を取得します | ^ | オペランドの 1 つに存在し、両方に存在しない場合、バイナリ XOR 演算子は 1 ビットを結果にコピーします。 | (A ^ B) は 49 を返します。これは 0011 0001 です
---|
| ~ | 2 の補数演算子は、ビットを「反転」する効果がある単項演算子です。 | (~A ) は -61 を取得します。これは 1100 0011、2 の補数、符号付き 2 進数です。 | << | 二項左シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ左にシフトされます。 | A << 2 は 240 を取得します。これは 1111 0000 です | >> | 2 項右シフト演算子。左オペランドの値は、右オペランドで指定されたビット数だけ右にシフトされます。 | A >> 2 は 15、つまり 0000 1111 になります | 例 C++ で使用できるビット単位の演算子を理解するには、以下の例を参照してください。 次の C++ プログラムをコピーして test.cpp ファイルに貼り付け、プログラムをコンパイルして実行します。 #include <iostream>
using namespace std;
main()
{
unsigned int a = 60; // 60 = 0011 1100
unsigned int b = 13; // 13 = 0000 1101
int c = 0;
c = a & b; // 12 = 0000 1100
cout << "Line 1 - c 的值是 " << c << endl ;
c = a | b; // 61 = 0011 1101
cout << "Line 2 - c 的值是 " << c << endl ;
c = a ^ b; // 49 = 0011 0001
cout << "Line 3 - c 的值是 " << c << endl ;
c = ~a; // -61 = 1100 0011
cout << "Line 4 - c 的值是 " << c << endl ;
c = a << 2; // 240 = 1111 0000
cout << "Line 5 - c 的值是 " << c << endl ;
c = a >> 2; // 15 = 0000 1111
cout << "Line 6 - c 的值是 " << c << endl ;
return 0;
} 上記のコードをコンパイルして実行すると、次の結果が生成されます: Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15 次の表は、C++ でサポートされている代入演算子のリストです。 =単純な代入演算子、右のオペランドの値を左のオペランドに代入します | 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 と同等です | | %= 法と代入演算子を見つけ、2 つのオペランドの法を見つけて、それを左側のオペランドに代入します | C %= Aこれは C = C % A | | <<= 左シフトおよび代入演算子 | C <<= 2 は C = C << 2 と同等です | | > ;>= 右シフトおよび代入演算子 | C >>= 2 は、C = C >> 2 | | &= ビット単位の AND および代入演算子 | C &= 2 と同等です。 C = C & 2 | | ^= ビットごとの排他的 OR および代入演算子 | C ^= 2 は C = C ^ 2 | | |= ビットごとの OR および代入演算子 と同等です | C |= 2 は C = C | 2 と同等です | | 例 C++ で使用できる代入演算子について学ぶには、以下の例を見てください。 次の C++ プログラムをコピーして test.cpp ファイルに貼り付け、プログラムをコンパイルして実行します。 #include <iostream>
using namespace std;
main()
{
int a = 21;
int c ;
c = a;
cout << "Line 1 - = 运算符实例,c 的值 = : " <<c<< endl ;
c += a;
cout << "Line 2 - += 运算符实例,c 的值 = : " <<c<< endl ;
c -= a;
cout << "Line 3 - -= 运算符实例,c 的值 = : " <<c<< endl ;
c *= a;
cout << "Line 4 - *= 运算符实例,c 的值 = : " <<c<< endl ;
c /= a;
cout << "Line 5 - /= 运算符实例,c 的值 = : " <<c<< endl ;
c = 200;
c %= a;
cout << "Line 6 - %= 运算符实例,c 的值 = : " <<c<< endl ;
c <<= 2;
cout << "Line 7 - <<= 运算符实例,c 的值 = : " <<c<< endl ;
c >>= 2;
cout << "Line 8 - >>= 运算符实例,c 的值 = : " <<c<< endl ;
c &= 2;
cout << "Line 9 - &= 运算符实例,c 的值 = : " <<c<< endl ;
c ^= 2;
cout << "Line 10 - ^= 运算符实例,c 的值 = : " <<c<< endl ;
c |= 2;
cout << "Line 11 - |= 运算符实例,c 的值 = : " <<c<< endl ;
return 0;
} 上記のコードをコンパイルして実行すると、次の結果が生成されます: Line 1 - = 运算符实例,c 的值 = 21
Line 2 - += 运算符实例,c 的值 = 42
Line 3 - -= 运算符实例,c 的值 = 21
Line 4 - *= 运算符实例,c 的值 = 441
Line 5 - /= 运算符实例,c 的值 = 21
Line 6 - %= 运算符实例,c 的值 = 11
Line 7 - <<= 运算符实例,c 的值 = 44
Line 8 - >>= 运算符实例,c 的值 = 11
Line 9 - &= 运算符实例,c 的值 = 2
Line 10 - ^= 运算符实例,c 的值 = 0
Line 11 - |= 运算符实例,c 的值 = 2 次の表は、C++ でサポートされているその他の重要な演算子のリストです。 演算子 | 説明 |
---|
sizeof | sizeof演算子は変数のサイズを返します。たとえば、sizeof(a) は 4 を返します (a は整数)。 | 条件 ? X : Y | 条件演算子。 Condition が true の場合、値は X になります。それ以外の場合、値は Y になります。 | , | カンマ演算子は、一連の操作を順番に実行します。カンマ式全体の値は、カンマ区切りリストの最後の式の値です。 | . (ドット) および -> (矢印) | メンバー演算子は、クラス、構造体、および共用体のメンバーを参照するために使用されます。 | Cast | キャスト演算子は、あるデータ型を別のデータ型に変換します。たとえば、int(2.2000) は 2 を返します。 | & | ポインタ演算子 & 変数のアドレスを返します。たとえば、&a; は変数の実際のアドレスを示します。 | * | ポインタ演算子 * 変数を指します。たとえば、*var; は変数 var を指します。 |
演算子の優先順位により、式内の項の組み合わせが決まります。これは式の評価方法に影響します。一部の演算子は他の演算子より優先順位が高くなります。たとえば、乗算演算子と除算演算子は加算演算子や減算演算子よりも優先順位が高くなります。 たとえば、x = 7 + 3 * 2、ここでは、演算子 * の優先順位が + よりも高いため、x には値 20 ではなく値 13 が割り当てられ、乗算 3*2 が最初に計算され、次に 7 が加算されます。 。 次の表では、各演算子を演算子の優先順位の高いものから低いものの順にリストしています。優先順位の高い演算子は表の上に表示され、優先順位の低い演算子は表の下に表示されます。式では、優先順位の高い演算子が最初に評価されます。 カテゴリ | 演算子 | 結合性 |
---|
サフィックス | () [] -> ++ - - | 左から右へ | ドル | + - ~ + + - - (型)* & sizeof | 右から左へ | 乗算と除算 | * / % | 左から右へ | 加減算 | + - | 左から右 | | << >> | | 関係 < <= >= | | | 待って == != | 左から右へ | | bit AND AND & | 左から右へ | | bit XOR XOR ^ | 左から右へ | | ビットごとの OR | | 左から右へ | | 論理AND && | 左から右へ | | 論理OR OR || | 左から右へ | | 条件 ? : | 右から左へ | | 割り当て = += -= *= /= %=>>= <<= &= ^= |= | 右から左へ | | カンマ 、 | 左から右へ | | 例 C++における演算子の優先順位を理解するには、次の例を見てください。 次の C++ プログラムをコピーして test.cpp ファイルに貼り付け、プログラムをコンパイルして実行します。 括弧がある場合とない場合の違いを比較すると、異なる結果が得られます。 ()、/、*、および + は優先順位が異なるため、優先順位の高い演算子が最初に評価されます。 #include <iostream>
using namespace std;
main()
{
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
cout << "(a + b) * c / d 的值是 " << e << endl ;
e = ((a + b) * c) / d; // (30 * 15 ) / 5
cout << "((a + b) * c) / d 的值是 " << e << endl ;
e = (a + b) * (c / d); // (30) * (15/5)
cout << "(a + b) * (c / d) 的值是 " << e << endl ;
e = a + (b * c) / d; // 20 + (150/5)
cout << "a + (b * c) / d 的值是 " << e << endl ;
return 0;
} 上記のコードをコンパイルして実行すると、次の結果が生成されます: (a + b) * c / d 的值是 90
((a + b) * c) / d 的值是 90
(a + b) * (c / d) 的值是 90
a + (b * c) / d 的值是 50 |