Golden Stone Project Phase 1 Challenge - Divide the 100,000 Prize Pool にサインアップしました。これは私の 8 回目の記事です。クリックしてイベントの詳細を表示します
演算子は、あらゆるプログラミング言語の基盤です。演算子は、オペランドに対して特定の数学的および論理的計算を実行するのに役立つ記号として定義できます。つまり、演算子はオペランドを操作すると言えます。たとえば、次のように「+」は加算の演算子です。
c = a + b;
复制代码
ここで、「+」は加算演算子と呼ばれる演算子で、「a」と「b」はオペランドです。加算演算子は、2 つのオペランド "a" と "b" を加算するようにコンパイラに指示します。
C/C++ プログラミング言語の機能は、演算子を使用しないと不完全です。
C/C++ には多くの組み込み演算子があり、次の 6 つのタイプに分けることができます。
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- 他のオペレーター
上記の演算子について詳しく説明しました。
1. 算術演算子:
これらの演算子は、オペランドに対して算術/数学演算を実行するために使用されます。例: (+、-、、/、%、++、-)。算術演算子には次の 2 種類があります。
a) 単項演算子: 単一のオペランドを操作または使用する演算子は、単項演算子です。例: インクリメント (++) およびデクリメント (–) 演算子
int val = 5;
++val; // 6
复制代码
b) 二項演算子: 2 つのオペランドを操作または使用する演算子は、二項演算子です。例: 加算 (+)、減算 (-)、乗算 (*)、除算 (/) 演算子
int a = 7;
int b = 2;
cout<<a+b; // 9
复制代码
2. 関係演算子:
これらは、2 つのオペランドの値を比較するために使用されます。たとえば、一方のオペランドが他方と等しいかどうか、一方が他方より大きいかどうかなどをチェックします。一部の関係演算子は (==, >= , <= ) です。
int a = 3;
int b = 5;
a < b;
// 运算符检查 a 是否小于 b
复制代码
3. 論理演算子:
論理演算子は、2 つ以上の条件/制約を組み合わせたり、考慮された元の条件の評価を補足したりするために使用されます。論理演算子の結果はブール値trueまたはfalseです。
例如,当两个条件都满足时,在 C 或 C++ 中表示为“&&”运算符的逻辑与返回 true。 否则,它返回 false。因此,当 a 和 b 都为真(即非零)时,a && b 返回真(更多参考请参阅本文)。****
(4 != 5) && (4 < 5); // true
复制代码
4.位运算符:
位运算符用于对操作数执行位级操作。运算符首先转换为位级,然后对操作数执行计算。诸如加法、减法、乘法等数学运算可以在位级别执行以加快处理速度。例如,在 C 或 C++ 中表示为& 运算符的按位 AND将两个数字作为操作数,并对两个数字的每一位进行 AND。仅当两个位都为 1 时,AND 的结果才为 1。(有关更多参考,请参阅本文)。****
int a = 5, b = 9; // a = 5(00000101), b = 9(00001001)
cout << (a ^ b); // 00001100
cout <<(~a); // 11111010
复制代码
5.赋值运算符:
赋值运算符用于为变量赋值。赋值运算符的左侧操作数是一个变量,而赋值运算符的右侧操作数是一个值。右侧的值必须与左侧的变量具有相同的数据类型,否则编译器将引发错误。
不同类型的赋值运算符如下所示
:“=”: 这是最简单的赋值运算符。该运算符用于将右侧的值赋给左侧的变量。
例如:
a = 10;
b = 20;
ch ='y';
复制代码
湾。“+=” :该运算符是 '+' 和 '=' 运算符的组合。该运算符首先将左侧变量的当前值与右侧的值相加,然后将结果赋给左侧的变量。
例如:
(a += b) 可以写成 (a = a + b)
如果最初存储在 a 中的值为 5。那么 (a += 6) = 11。
复制代码
C。“-=” :此运算符是 '-' 和 '=' 运算符的组合。该运算符首先从左侧变量的当前值中减去右侧的值,然后将结果分配给左侧的变量。
例如:
(a -= b) 可以写成 (a = a - b)
如果最初存储在 a 中的值是 8。那么 (a -= 6) = 2。
复制代码
d。“*=” :此运算符是 '*' 和 '=' 运算符的组合。该运算符首先将左侧变量的当前值乘以右侧的值,然后将结果分配给左侧的变量。
例如:
(a *= b) 可以写成 (a = a * b)
如果最初存储在 a 中的值为 5。那么 (a *= 6) = 30。
复制代码
e. “/=” :此运算符是 '/' 和 '=' 运算符的组合。该运算符首先将左侧变量的当前值除以右侧的值,然后将结果分配给左侧的变量。
例如:
(a /= b) 可以写成 (a = a / b)
如果最初,存储在 a 中的值为 6。那么 (a /= 2) = 3。
复制代码
6. 其他运营商:
除了上述运算符外,C 或 C++ 中还有一些其他运算符可用于执行某些特定任务。其中一些在这里讨论:
sizeof 运算符:
- sizeof 在 C/C++ 编程语言中被广泛使用。
- 它是一个编译时一元运算符,可用于计算其操作数的大小。
- sizeof 的结果是无符号整数类型,通常用 size_t 表示。
- 基本上,sizeof 运算符用于计算变量的大小。(参考这篇文章)
逗号运算符:
- 逗号运算符(由标记表示)是一个二元运算符,它计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。
- 逗号运算符的优先级是所有 C 运算符中最低的。
- 逗号既充当运算符又充当分隔符。(参考这篇文章)
条件运算符:
- 条件演算子の形式はExpression1? expression2:expression3です。
- ここで、式 1 は評価される条件です。条件 (式 1) が真の場合は、式 2を実行して結果を返します。条件 (式 1) が偽の場合は、式 3を実行して結果を返します。
- if..else ステートメントの使用を条件演算子に置き換えることができます。
ドット (.) および矢印 (->) 演算子:
- メンバー演算子は、クラス、構造体、および共用体の個々のメンバーを参照するために使用されます。
- ドット演算子は実際のオブジェクトに適用されます。
- アロー演算子は、オブジェクトへのポインターで使用されます。
キャスト演算子:
-
変換演算子は、あるデータ型を別のデータ型に変換します。たとえば、int(2.2000) は 2 を返します。
-
キャストは、あるデータ型を別のデータ型に強制的に変換する特別な演算子です。
-
ほとんどの C++ コンパイラでサポートされている最も一般的な変換は、 [ (型) 式 ]です。&、
*
演算子: -
ポインター演算子 & は、変数のアドレスを返します。たとえば、 &a; は変数の実際のアドレスを示します。
-
ポインター演算子 * は、変数へのポインターです。たとえば、*var; は変数 var を指します。
以下は、上記の演算子の実装です。
// C++ 中的运算符
#include<iostream>
using namespace std;
int main(){
int a=10, b=5;
// 算术运算符
cout<<"以下是 C++ 中的算术运算符"<<endl;
cout<<"The value of a + b is "<<a+b<<endl;
cout<<"The value of a - b is "<<a-b<<endl;
cout<<"The value of a * b is "<<a*b<<endl;
cout<<"The value of a / b is "<<a/b<<endl;
cout<<"The value of a % b is "<<a%b<<endl;
cout<<"The value of a++ is "<<a++<<endl; // 首先打印 (a) 然后将其增加 1
cout<<"The value of a-- is "<<a--<<endl; // 先打印 (a+1) 然后减 1
cout<<"The value of ++a is "<<++a<<endl; // 将 (a) 增加 (a+1) 然后打印
cout<<"The value of --a is "<<--a<<endl; // 将 (a+1) 减 (a) 然后打印
cout<<endl;
// 赋值运算符 --> 用于给变量赋值
// int a =3, b=9;
// char d='d';
// 比较运算符
// 所有这些比较运算符的输出将为 (1) 如果为真,则为 (0) 如果为假
cout<<"以下是 C++ 中的比较运算符"<<endl;
cout<<"a == b 的值是 "<<(a==b)<<endl;
cout<<"The value of a != b is "<<(a!=b)<<endl;
cout<<"The value of a >= b is "<<(a>=b)<<endl;
cout<<"The value of a <= b is "<<(a<=b)<<endl;
cout<<"The value of a > b is "<<(a>b)<<endl;
cout<<"The value of a < b is "<<(a<b)<<endl;
cout<<endl;
// 逻辑运算符
cout<<"以下是 C++ 中的逻辑运算符"<<endl;
cout<<"The value of this logical and operator ((a==b) && (a<b)) is:"<<((a==b) && (a<b))<<endl;
cout<<"The value of this logical or operator ((a==b) || (a<b)) is:"<<((a==b) || (a<b))<<endl;
cout<<"The value of this logical not operator (!(a==b)) is:"<<(!(a==b))<<endl;
return 0;
}
复制代码
出力
以下是 C++ 中的算术运算符
The value of a + b is 15
The value of a - b is 5
The value of a * b is 50
The value of a / b is 2
The value of a % b is 0
The value of a++ is 10
The value of a-- is 11
The value of ++a is 11
The value of --a is 10
以下是 C++ 中的比较运算符
The value of a == b is 0
The value of a != b is 1
The value of a >= b is 1
The value of a <= b is 0
The value of a > b is 1
The value of a < b is 0
以下是 C++ 中的逻辑运算符
The value of this logical and operator ((a==b) && (a<b)) is:0
The value of this logical or operator ((a==b) || (a<b)) is:0
The value of this logical not operator (!(a==b)) is:1
复制代码