C#の演算子
オペレータは、特定の数学的または論理演算を実行するようにコンパイラに指示するためのシンボルです。 次のようにC#のは、組み込み演算子の富を持っています。
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- その他の演算子
このチュートリアルでは、算術演算子、関係演算子、論理演算子、ビット演算子、代入演算子や他の事業者のそれぞれについて説明します。
算術演算子
次の表は、すべての算術演算子のC#のサポートを示しています。 10の値が変数とし、変数Bは、その後、20:
运算符 | 描述 | 实例 |
---|---|---|
+ | 把两个操作数相加 | A + B 将得到 30 |
- | 从第一个操作数中减去第二个操作数 | A - B 将得到 -10 |
* | 把两个操作数相乘 | A * B 将得到 200 |
/ | 分子除以分母 | B / A 将得到 2 |
% | 取模运算符,整除后的余数 | B % A 将得到 0 |
++ | 自增运算符,整数值增加 1 | A++ 将得到 11 |
-- | 自减运算符,整数值减少 1 | A-- 将得到 9 |
例
C#利用可能なすべての算術演算子を学ぶために次の例を考えてみます。
システムを用いました。 名前空間OperatorsAppl { クラスプログラム { 静的な無効メイン(文字列[] args) { = 21 int型。 int型、B = 10; int cです。 C = A + B; Console.WriteLineを( "1行目 - Cは{0}"、C); C = A - B; Console.WriteLineを( "2行目 - Cは{0}"、C); C = * bの。 Console.WriteLineを( "3行目 - Cは{0}"、C); C = A / B; Console.WriteLineを( "4ライン - Cは{0}"、C); C =%bの。 Console.WriteLineを( "ライン5 - cは{0}である」と、c); // ++最初のインクリメント操作は、割り当てC = ++によって行わ。 Console.WriteLineを( "6行目 - Cは{0}"、C); 22の//この場合、値 = -A-C譲渡による// --aまず自己減算。 Console.WriteLineを( "7行目 - Cは{0}"、C); Console.ReadLine(); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
1行目 - cの値が31であります 2行目 - cの値が11であります 3行目は、 - C 210の値であり、 4ライン - cの値が2であります 5行目 - cの値が1であります 6行目 - cの値が22であります 7行目 - cの値が21であります
- C = ++:自己インクリメント演算子上のCへの最初の割り当て、その後。
- C = ++:第1の自己インクリメント演算子、その後、Cに割り当てられました。
- C = A--:Cに、その後、自己減算の最初の割り当て。
- C = --a:第1の自己減算、その後Cに割り当てられました。
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 1; int b; // a++ 先赋值再进行自增运算 b = a++; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // ++a 先进行自增运算再赋值 a = 1; // 重新初始化 a b = ++a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // a-- 先赋值再进行自减运算 a = 1; // 重新初始化 a b= a--; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); // --a 先进行自减运算再赋值 a = 1; // 重新初始化 a b= --a; Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); Console.ReadLine(); } } }
上記のプログラムは、出力は次のようになります。
a = 2 b = 1 a = 2 b = 2 a = 0 b = 1 a = 0 b = 0
関係演算子
次の表は、すべての関係演算子のC#のサポートを示しています。 10の値が変数とし、変数Bは、その後、20:
运算符 | 描述 | 实例 |
---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 | (A == B) 不为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 | (A > B) 不为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 | (A < B) 为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 | (A >= B) 不为真。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 | (A <= B) 为真。 |
例
C#利用可能なすべての関係演算子を学ぶために次の例を考えてみます。
システムを用いました。 クラスプログラム { 静的な無効メイン(文字列[] args) { = 21 int型。 int型、B = 10; (== b)があれば { Console.WriteLineを( "ライン1 - AがBに等しいです"); } ほかに { Console.WriteLineを( "ライン1 - Bに等しくありません"); } (<b)の場合 { Console.WriteLineを(「ライン2 - bより少ないです "); } ほかに { Console.WriteLineを(「ライン2 - bより小さくありません "); } 場合(> b)の { Console.WriteLineを( "3行目 - aはbよりも大きいです"); } ほかに { Console.WriteLineを( "3行目 - bより大きくありません"); } / * /の値及びb *を変更 = 5。 B = 20; (<= b)の場合 { Console.WriteLineを( "4行目 - 未満またはbに等しいです"); } (bは> = a)の場合 { Console.WriteLineを( "5行目 - bがより大きいか等しいです"); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
1行目 - Bに等しくありません 2行目 - bより小さくありません 3行目 - aはbよりも大きいです 4行目 - aが未満またはbに等しいです。 ライン5は、 - Bは以上であります
論理演算子
次の表に、すべての論理演算子のC#のサポートを示しています。 真の可変ブール値を仮定し、変数Bは、その後、偽のブール値です。
运算符 | 描述 | 实例 |
---|---|---|
&& | 称为逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A && B) 为假。 |
|| | 称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 | (A || B) 为真。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。 | !(A && B) 为真。 |
例
C#の利用可能なすべての論理演算子を学ぶために次の例を考えてみます。
システムを用いました。 名前空間OperatorsAppl { クラスプログラム { 静的な無効メイン(文字列[] args) { BOOL =はtrue。 ブールB =はtrue。 (&& b)があれば { Console.WriteLineを( "ライン1 - 条件が真です"); } (|| b)は場合 { Console.WriteLineを(「ライン2 - 条件が真です "); } / * /の値及びb *を変更 = falseは、 B =はtrue。 (&& b)があれば { Console.WriteLineを( "3行目 - 条件が真です"); } ほかに { Console.WriteLineを( "3行目 - 条件が真ではありません"); } 場合(!(&& b)参照) { Console.WriteLineを( "4行目 - 条件が真です"); } Console.ReadLine(); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
1行目 - 条件が真の2行目です - 条件が真の3行目である - 条件が真の4行目ではありません - 条件が真であります
ビット演算子
ビット演算子はビットに作用し、ビット演算によってビット。 &、|次のように^真理値表は次のとおりです。
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 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 1100
| B = 0011 1101
A ^ B = 0011 0001
〜A = 1100 0011
次の表は、C#のサポートビット単位の演算子を示します。 その後、変数Aが 60である変数B 13の値を仮定します。
运算符 | 描述 | 实例 |
---|---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 | (A & B) 将得到 12,即为 0000 1100 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 | (A | B) 将得到 61,即为 0011 1101 |
^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 | (A ^ B) 将得到 49,即为 0011 0001 |
~ | 二进制补码运算符是一元运算符,具有"翻转"位效果。 | (~A ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 | A << 2 将得到 240,即为 1111 0000 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 | A >> 2 将得到 15,即为 0000 1111 |
例
、C#のを学ぶために、すべての利用可能なビット演算子を次の例を考えてみます。
システムを用いました。 名前空間OperatorsAppl { クラスプログラム { 静的な無効メイン(文字列[] args) { = 60のint; = 0011 1100 / * 60 * / int型B = 13; / * 13 = 0000 1101 * / INT C = 0。 C = A&B; / * 12 = 0000 1100 * / Console.WriteLineを( "1行目 - Cは{0}"、C); C = A | B; / * 61 = 0011 1101 * / Console.WriteLineを( "2行目 - Cは{0}"、C); C = A ^ B; / * 49 = 0011 0001 * / Console.WriteLineを( "3行目 - Cは{0}"、C); C =〜; / * - 61 = 1100 0011 * / Console.WriteLineを( "4ライン - Cは{0}"、C); C = << 2; / * 240 = 1111 0000 * / Console.WriteLineを( "ライン5 - cは{0}である」と、c); C = A >> 2; / * 15 = 0000 1111 * / Console.WriteLineを( "6行目 - Cは{0}"、C); Console.ReadLine(); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
1行目は、 - Cの値が12であります 2行目 - cの値が61であります 3行目 - cの値が49であります 4行目 - 値cは-61 5行目 - cの値が240であります 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 |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
<<= | 左移且赋值运算符 | C <<= 2 等同于 C = C << 2 |
>>= | 右移且赋值运算符 | C >>= 2 等同于 C = C >> 2 |
&= | 按位与且赋值运算符 | C &= 2 等同于 C = C & 2 |
^= | 按位异或且赋值运算符 | C ^= 2 等同于 C = C ^ 2 |
|= | 按位或且赋值运算符 | C |= 2 等同于 C = C | 2 |
例
利用可能なすべての代入演算子でのC#を学ぶために次の例を考えてみます。
システムを用いました。 名前空間OperatorsAppl { クラスプログラム { 静的な無効メイン(文字列[] args) { = 21 int型。 int cです。 C = A; Console.WriteLineを( "ライン1 - = C値= {0}"、C); C + = A; Console.WriteLineを(「ライン2 - + = C値= {0} "、C); C - =。 Console.WriteLineを( "3行目 - - = C値= {0}"、C); C * = A; Console.WriteLineを( "ライン4 - * = C値= {0}"、C); C / = A; Console.WriteLineを( "5行目 - / = C値= {0}"、C); C = 200; Cの%=; Console.WriteLineを( "ライン6 - %= C値= {0}"、C); C << = 2; Console.WriteLineを( "7行目 - = {0} << = C値」と、c); C >> = 2。 Console.WriteLineを( "ライン8 - >> = {0} C値=」をC、); C&= 2; Console.WriteLineを( "ライン9 - &= C値= {0}"、C); C ^ = 2。 Console.WriteLineを( "10行目 - ^ = C値= {0}"、C); C | = 2。 Console.WriteLineを( "11行目 - | = C値= {0}"、C); Console.ReadLine(); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
1行目 - = C =値21 2行目 - + = cの値= 42 3行目は - - cの値を= = 21 4行目 - Cの* =値= 441 5行目 - / = C =値21 6行目 - %= cの値= 11 7行目 - << = cの値= 44 8行目 - 値>> = C = 11 9行目 - &= C = 2の値 10行目 - ^ = C = 0値 11行目 - | = C 2 =値
その他の演算子
?次の表は、C# のsizeof、typeof演算などを含むいくつかの他の重要な演算子をサポートを示しています。
演算子 説明 例 sizeof() データ型のサイズを返します。 sizeof(int)が、4を返します。 typeof演算() クラス型を返します。 typeof演算(StreamReaderを); & アドレス変数を返します。 &A;あなたは変数の実際のアドレスを取得します。 * ポインタ変数。 * A;変数を指します。 ?: 条件式 ?そうでない場合はY:条件が真、またはXの場合 あります 特定の型のオブジェクトかどうかを決定します。 //(フォードが自動車である)場合には、オブジェクトのフォード車のクラスかどうかを確認してください。 として 変換は、それが例外をスローしません失敗した場合でも、キャストします。 オブジェクトOBJ =新しいStringReader( "こんにちは");StringReader R = objをStringReaderとして;
例
システムを用いました。 名前空間OperatorsAppl { クラスプログラム { 静的な無効メイン(文字列[] args) { / * sizeof演算子インスタンス* / Console.WriteLineを( "int型のサイズである{0}"、はsizeof(int型)); Console.WriteLineを(、はsizeof(ショート)「短いサイズは{0}です "); Console.WriteLineを(、はsizeof(ダブル) "{0}のサイズを2倍"); / *三項演算子は、* /インスタンスを破ります 、B int型。 = 10; B =(== 1)20:30 ;? Console.WriteLineを( "B値は{0}"、b)は、 B =(== 10)20:30 ;? Console.WriteLineを( "B値は{0}"、b)は、 Console.ReadLine(); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
整数のサイズは4であります 短いサイズは2です ダブルサイズは8です Bの値は30であります Bの値は20であります
C#の演算子の優先順位で
演算子の優先順位は、式の組み合わせ用語を決定します。 これはどのように表現計算に影響を与えます。 一部の事業者は、そのようなオペレータ高い優先順位よりも加算と減算、乗算、除算演算子などの他の演算子、より高い優先順位を持っています。
例えば、X = 7 + 3 * 2、xが13の代わりに20に割り当てられている場合には、*演算子は+より優先順位が高いため、そのようにまず7を追加し、3 * 2乗算を計算します。
次の表は、上記の優先度の高い事業者がテーブルに表示され、次の優先順位の低い演算子と、テーブルに表示された、各オペレータのための演算子の優先順位の順に表示されます。 式では、より高い優先順位の演算子の優先度を算出します。
类别 | 运算符 | 结合性 |
---|---|---|
后缀 | () [] -> . ++ - - | 从左到右 |
一元 | + - ! ~ ++ - - (type)* & sizeof | 从右到左 |
乘除 | * / % | 从左到右 |
加减 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
位与 AND | & | 从左到右 |
位异或 XOR | ^ | 从左到右 |
位或 OR | | | 从左到右 |
逻辑与 AND | && | 从左到右 |
逻辑或 OR | || | 从左到右 |
条件 | ?: | 从右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
例
システムを用いました。 名前空間OperatorsAppl { クラスプログラム { 静的な無効メイン(文字列[] args) { = 20 int型。 int型、B = 10; int型のC = 15; int型のD = 5; int型電子。 E =(A + B)* C / D; //(30 * 15)/ 5 Console.WriteLineを( "値(A + B)* C / Dされている{0}"、電子); E =((A + B)* C)/ D; //(30 * 15)/ 5 Console.WriteLineを( "値((A + B)* C)/ dが{0}である」、E)。 E =(A + B)・(C / D); //(30)*(15/5) Console.WriteLineを(E "(A + B)・(C / D)の値は{0}です」)。 E = A +(b *表C)/ D; // 20 +(5分の150) Console.WriteLineをは(E "+(b *のcの値)/ dは{0}です」)。 Console.ReadLine(); } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
値(A + B)* C / Dが90であります 値は、((A + B)* C)/ dが90であります (A + B)*(C / D)の値は90であります +(b *表C)の値は、/ Dが50であります