これまでの研究により、演算子にはさまざまなタイプがあることがわかっていますが、これらの異なるタイプの演算子が同じ式内に出現する場合、演算の合理性を確保するためには、演算子の優先順位に従って演算を実行する必要があります。結果の正確さ、正しさと一意性。演算子の優先順位によって、式の各部分で演算が実行される順序が決まります。
C# における演算子の優先順位については、次の表で詳しく説明します。
優先順位 | オペレーター | 名前または意味 | 使用形態 | 綴じ方向 | 説明する |
---|---|---|---|---|---|
1 | [] | 配列の添字 | 配列名[整数式] | 左から右へ | |
() | 圆括号 | (式)/関数名(仮パラメータリスト) | |||
. | 成员选择(对象) | オブジェクト.メンバー名 | |||
-> | 成员选择(指针) | オブジェクトポインタ -> メンバー名 | |||
2 | – | マイナス演算子 | -表現 | 右から左に | 単項演算子 |
(type) | 强制类型转换 | (データの種類) 式 | |||
++ | 自增运算符 | ++変数名/変数名++ | 単項演算子 | ||
— | 自减运算符 | –変数名/変数名– | 単項演算子 | ||
* | 取值运算符 | *ポインタ式 | 単項演算子 | ||
& | 取地址运算符 | & 左辺値式 | 単項演算子 | ||
! | 逻辑非运算符 | !表現 | 単項演算子 | ||
~ | 按位取反运算符 | ~式 | 単項演算子 | ||
sizeof | 长度运算符 | 式のサイズ/(タイプ)のサイズ | |||
3 | / | 削除 | 式/式 | 左から右へ | 二項演算子 |
* | 乘 | 式*式 | 二項演算子 | ||
% | 余数(取模) | integer_expression% integer_expression | 二項演算子 | ||
4 | + | 追加 | 式 + 式 | 左から右へ | 二項演算子 |
– | 减 | 式 – 式 | 二項演算子 | ||
5 | << | 左に移動 | 式 << 式 | 左から右へ | 二項演算子 |
>> | 右移 | 式 >> 式 | 二項演算子 | ||
6 | > | 以上 | 式>式 | 左から右へ | 二項演算子 |
>= | 大于等于 | 式 >= 式 | 二項演算子 | ||
< | 小于 | 式<式 | 二項演算子 | ||
<= | 小于等于 | 式 <= 式 | 二項演算子 | ||
7 | == | 同等 | 式 == 式 | 左から右へ | 二項演算子 |
!= | 不等于 | 式 != 式 | 二項演算子 | ||
8 | & | ビットごとの AND | 整数式と整数式 | 左から右へ | 二項演算子 |
9 | ^ | ビット単位の XOR | 整数式^整数式 | 左から右へ | 二項演算子 |
10 | | | ビットごとまたは | 整数式 | 整数式 | 左から右へ | 二項演算子 |
11 | && | ロジックと | 式 && 式 | 左から右へ | 二項演算子 |
12 | || | 論理的または | 式 || 式 | 左から右へ | 二項演算子 |
13 | ?: | 条件演算子 | 式 1?式 2:式 3 | 右から左に | 三項演算子 |
14 | = | 代入演算子 | 変数 = 式 | 右から左に | |
/= | 除后赋值 | 変数/=式 | |||
*= | 乘后赋值 | 変数 *= 式 | |||
%= | 取模后赋值 | 変数 %=式 | |||
+= | 加后赋值 | 変数 += 式 | |||
-= | 减后赋值 | 変数 -= 式 | |||
<<= | 左移后赋值 | 変数 <<= 式 | |||
>>= | 右移后赋值 | 変数 >>= 式 | |||
&= | 按位与后赋值 | 変数 &= 式 | |||
^= | 按位异或后赋值 | 変数 ^= 式 | |||
|= | 按位或后赋值 | 変数 |= 式 | |||
15 | , | カンマ演算子 | 表現、表現、… | 左から右へ | 左から右への順次操作 |
【例】以下は演算子の優先順位を示す例です。
using System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args){
int a = 12;
int b = 34;
int c = 56;
int d = 7;
int e;
e = (a + b) * c / d;
Console.WriteLine("(a + b) * c / d の値は {0}", e);
e = ((a + b) * c) / d;
Console.WriteLine("((a + b) * c) / d の値は {0}", e);
e = (a + b) * (c / d);
Console.WriteLine("(a + b) * (c / d) の値は {0}", e);
e = a + (b * c) / d;
Console.WriteLine("a + (b * c) / d の値は {0}", e);
Console.ReadLine();
}
}
}
操作の結果は次のようになります。
(a + b) * c / d の値は 368
((a + b) * c) / d の値は 368
(a + b) * (c / d) の値は 368
a + (b * c) / d の値は 284
「 C# 演算子の優先順位」についてわかりやすく解説!絶対に観るべきベスト2動画
C#プログラミング入門 第5回 (4) 演算子の優先順位
【Unity C# 基礎講座】比較演算子