そもそも演算子ってどんなもの?
演算子には優先順位があるって聞いたんだけど……
こんにちは。文系出身で今年エンジニア8年目になる佐藤です。皆さんはC#で「演算子」をしっかり使えていますか?
いろいろあってどれをどんな時に使えばいいか分からない、ちゃんと使っているはずなのに上手くいかない。そんな悩みを抱えている方も多いのではないでしょうか。
この記事ではC#でよく使う演算子の紹介と使い方、実は重要な演算子の優先順位について解説していきます。そもそも演算子って何……? という方に向けて、まずは「演算子とは何か?」を解説してきますので安心して最後までご覧ください。
そもそも演算子とは?
プログラミングをしているときに「+」や「-」、「=」や「&」と言った記号を使うことは良くありますよね。実はこれが演算子なんです。
記号で値や変数の関係を表したり、計算したりするときに使われるものなんですね。普段意識せずとも使用していると思います。そして、演算子の対象になる変数などを「オペランド」と呼びます。ちょっと聞きなれないですよね。
数学なら左辺や右辺と呼びますが、プログラミングでは「左オペランド」と「右オペランド」と呼びます。覚えておくと、書籍などに登場した時役に立ちますので、頭の片隅に置いておきましょう。
演算子の種類とは
そんな演算子ですが、実は種類に名前がついているんです。よく使う演算子の意味、使い方については後程詳しく解説していくので、ここでは種類の名前の意味だけを把握していきましょう。
算術演算子
算術演算子というのは、特に数値の計算を行うときに使用されるものです。「+」や「ー」など一番良く使うので、使い方もご存知の方が大半かと思います。
論理演算子
論理演算子はANDやORのことです。C#で言うと「&」や「|」の記号になります。こちらもif文などを書くときに良く使いますよね。
関係演算子
関係演算子は、オペランド同士の関係を表す記号です。C#だと「==」や「!=」などがあります。こちらもif文などで使ったことがありますよね。とっつきにくい名称かもしれませんが、プログラミングをする上でよく使っているモノばかりです。
次によく使うものについて詳しく解説していきます。
よく使う演算子一覧と使い方
この章では、よく使う演算子の一覧と意味、使い方を紹介していきます。
算術演算子
こちらはおなじみなので、ご存知の方も多いかもしれません。
演算子 | 使い方の例 | 意味 |
+ | a + b | 足す |
– | a – b | 引く |
* | a * b | 掛ける |
/ | a / b | 割る |
論理演算子
こちらは、よく使うものばかりなので意味を理解しておきましょう。
演算子 | 使い方の例 | 意味 |
& | a & b | 「aかつb」という意味、ANDのこと |
| | a | b | 「aまたはb」という意味、ORのこと |
実際にはこんな感じで使われます。
if (a == 1 & b ==3) { }
そして、この論理演算子にはもう一つ大切な要素があります。
「&&」と「&」では若干動きが異なるという点です。
&&と&、||と|の違い
論理演算子を二つ重ねて使用した時には、一つの時と動きが異なります。&&や||と表記した時には「短絡評価」という動きをしてくれます。これは、処理を早めるテクニックのひとつなので、意味を理解して積極的に使ってみましょう。
短絡評価と聞くと難しく感じますが、内容は実は簡単なんです。例を見ながら確認していきましょう。次のような変数があるとします。
a = 2 b = 3
そして、次のようなif文を書きます。
if(a == 1 & b ==3)
もちろんaは2なので、最初の項目を見るだけで「かつ」の条件からは外れてしまいますよね。ですが、機械では「bの数字はなんだろう? 条件に合うかな?」と確認を行ってしまうんです。
もうif文の中の処理をしないことが決定しているのに、確認が行われてしまい、無駄な処理が発生してしまいます。
そこで「短絡評価」です。短絡評価とは条件から外れた時点で確認の処理を行わない動きのことをいいます。上記の例で言えば、aの値を確認した時点で「かつ」の条件から外れたので、bの値を確認せず次に行きます。
無駄な処理が減るので、システムの動作を早くすることが出来るということなんですね。書き方はこんな感じです。
if(a == 1 && b ==3)
些細なことですが、重要な要素なので忘れずに使い分けていきましょう。
関係演算子
関係演算子も必ず使用する要素なので、よく使うものは意味をしっかり理解しておきましょう。
演算子 | 使い方の例 | 意味 |
== | a == b | aとbは等しい |
!= | a != b | aとbは異なる |
> | a > b | aはbより大きい |
< | a < b | aはbより小さい |
>= | a >= b | aはb以上 |
<= | a <= b | aはb以下 |
「以上」「以下」と「より」は意味がちょっとずつ違ってくるので注意して使いましょう。
例えば「aは3より大きい」といわれたときは4・5・6…などの数字のことです、3は含めません。「aは3以上」であれば3・4・5・6…などの数字を差しています、3を含んだ数字です。
コードを書いているとごっちゃになりがちなので、間違って書いてしまって思わぬエラーになったりします。分からなくなったら、都度確認して覚えていきましょう。
その他よく使うもの
そのほかにもよく使う演算子があるので、紹介していきます。
演算子 使い方の例 意味
++ ++a aに1ずつ加算していく
= a = b 代入する
(文字列に対して)+ ”あ”+”い” 文字列を結合する(例なら「あい」になる)
演算子 | 使い方の例 | 意味 |
++ | ++a | aに1ずつ加算していく |
= | a = b | 代入する |
(文字列に対して)+ | ”あ”+”い” | 文字列を結合する (例なら「あい」になる) |
++はfor文でよく使われますよね、=も意識せず使用していると思います。文字列を結合したい時も+を使いますので、もし数字を足すのではなく結合させたい場合などには混同に注意しましょう。
まずは、これらの演算子について実際に使って慣れていきましょう。次に、覚えておいて損はない「優先順位について」解説します。
演算子の優先順位とは?
思うように処理してくれない……
そんなときはありませんか? もしかしたら、優先順位が関係しているかもしれません。計算にも優先順位がありますよね。掛けるや割るほうが優先順位が高く、先に計算しなければなりませんでした。
プログラミング上の演算子にもこのように、優先順位があり機械上で先に処理されるかどうか決まっています。
先程紹介した演算子を優先順に並べたものを表にしましたので、もし思うように動作しないという時には確認してみてください。もし、優先順位を無視して処理してほしい時には()を使うようにしましょう。
優先度 | 演算子 |
1 |
++などオペランドが一つで機能する演算子 |
2 | *、/ |
3 | +、- |
4 | <、 >、 <=、 >= |
5 | ==、!= |
6 | & |
7 | | |
8 | && |
9 | || |
10 | =などの代入 |
まとめ
「演算子とはなにか?」という解説と「C#でよく使う演算子」について紹介しました。実際に使ってみないと慣れていかないと思いますので、ぜひこの記事を読みながらいろいろ試してみてくださいね。それではまた次の解説で!