数学では✕と÷は+と-より優先ですよね。同じようにプログラミングの演算子にも優先順位が存在します。
ここではC#における演算子の優先順位を学びましょう。最悪知らなくても何とかなる方法もあるので合わせて説明します。
型と変数を学んだので演算ができるようになりました。という事で、ここではC#で利用できる演算子について理解しましょう。この中でbit演算を使用するので、理解してない人はコンピュータサイエンスの講座を先に読んでください。算術演算子+, -, *, /, %いわゆる四則演算です。簡単なので例を見て覚えましょう。namespace Sample { internal class Program { static void Main...
演算子の優先順位
全ての演算子には優先順位が存在します。現状では不明な演算子もありますが一覧を見てみましょう。
上から優先順位が高い順に並んでます。仮に優先順位が同列の場合、後述する結合規則に従って順番が決定されます。
多い...
確かに数は多いんだけど、この優先順位は理にかなった作りになってるよ。実際にプログラミングすると分かるんだけど、その順番で処理されないと困るって演算子ほど優先順位が高いんだ。だから今は暗記しなくていいし、まずは優先順位が存在することを知ってほしいな。
演算子の結合規則
これは演算子が左から右に評価されるか、右から左に評価されるかを意味します。
そして、左から右に評価することを左結合、右から左を右結合と呼びます。
この順番は演算子で決定されていて、正直なところ殆どが左から右の左結合です。
ついでに言うなら、特殊な書き方をしない場合は意識しなくても殆ど間違えません。
ここで1つの例を見てみましょう。
int x = 1 + 2 + 3;
この式ってどう評価して欲しいですか?
1 + 2 + 3を計算した結果をxに代入して欲しいです。
当然そうだよね。実は代入演算子は右結合なんだけど、そうじゃないと式として崩壊する。
こんな感じで普通はこうだろって感じに動くから、殆どを左結合と思っていいよ。
具体的に右結合なのはこれです。これらの演算子で複雑なことをするときは注意してください。
- 代入演算子
- null合体演算子
- ラムダ式
- 条件演算子 (三項演算子)
これが1番シンプルな右結合の例と思います。
int x = y = z;
代入演算子は右結合なので、yにzを代入した結果がxに代入されます。
この場合は同じ結果にしかなりませんが、もっと複雑な書き方をすると間違いの元になります。
普通に書いたら問題ない設計になってるので、それほど気にしなくてもいいと思う。
()を使う
優先順位を覚えるのが面倒だったり不安がある場合の結論は()です。
数学では()で囲ったら優先されましたよね。プログラミングも同じく()で囲めば先に処理されます。
なので分からないうちは()で囲みまくるか、評価する式を分割しましょう。
int x = (1 + 3) * 5;
あとがき
最初はトリッキーな書き方をせず普通に書きましょう。別に()を多用することは悪くないです。
◆ C#に関する学習コンテンツ
この記事は参考になりましたか?
コメント