この記事で分かること
- C言語の「演算子」の意味や種類が分かる
- C言語の「演算子」の使い方が分かる
- C言語の「演算子」を使う時の注意点が分かる
C言語の演算子(operator)の概要
この記事では、C言語の演算子の種類と、それぞれの役割について説明します。
演算子は、主にプログラムで変数と変数を演算(計算)するために使われます。例えば、1+1を計算する時の”+”が「演算子」に該当します。また、変数とは、プログラムを使うユーザーから入力される数字などプログラムとして決めることができない、「変わる数字」のことです。
例えば、次のような方程式を考えます。
f=x^2+16x^2+60
この場合、変数は
x
になりますが、このXは方程式をみた人が自由に値を入力することができるので、この「X」を変数と呼びます。演算子はたくさんの種類があり、言語によってもさまざまです。演算子の使い方次第で、プログラムを短く簡潔に書くことができたり、変数の意味を明確にしたり、言語によっては文字列を操作することができたりします。
C言語の演算子(operator)を使う環境
演算子の使い方を確かめるためには、C言語プログラムを実行する必要があります。
C言語を使う開発環境の作り方については下の記事で説明しています。こちらではレンタルサーバを使ったC言語プログラムの実行方法を説明しています。まだプログラム実行環境ができていない人はこちらの記事を読んでください。
C言語の演算子(operator)の種類
ここではC言語で扱う演算子の種類と具合的な性質について説明します。演算子には、「単項演算子」、「2項演算子」、「3項演算子」という大きく3つの種類があり、C言語のプログラミングではいづれも基礎となるものです。また演算子を説明する上で重要な「オペランド」という言葉についても説明します。最後に演算子の理解を確かめる例題を出します。説明は下記の順で行います。
- 単項演算子(unary operator)
- 2項演算子(binary operator)
- 3項演算子(ternary operator)
- オペランド(operand)とは
- 演算子の理解を問う例題
1.単項演算子(unary operator)
単項演算子は、オペランドの左か右に位置して、対象の演算を行うものです。オペランドを1つしかとらないので、単項演算子と呼びます。
例えば、下記のような単項演算子があります。
演算子 | 働き |
---|---|
-a | 右オペランドの符号を反転した値を返す |
++a | 1を加え値を返す |
&a | aのアドレスを返す |
「++a」のような単項演算子には、微妙な違いがあります。
例えば、「++a」は、プログラムが、変数aを通る前に、「aに1を加えた値」を返します。一方で、「a++」は、プログラムが、変数aを通った後に「aに1を加えた値」を返します。一見、「a++」の「プログラムが変数aを通った後に1を加える」など、何の役に立つのだろう?と思われるかもしれませんが、これは同じ処理を繰り返すループで役に立ちます。
1回目のループでは、1加わっていない数字で処理し、2回目のループで処理するときには1加わった数字で処理する といった具合です。つまり、ループの処理を終えた後に、「変数に1を加えたい」場合には、「a++」の演算子を使うことになります。
2.二項演算子(binary operator)
二項演算子は、左右のオペランドに対して演算を行うものです。演算子の左右にオペランドを2つ取るので、二項演算子と呼びます。
例えば、下記のような2項演算子があります。
演算子 | 働き |
---|---|
a*b | 左右のオペランドの積を返す |
a/b | 左右のオペランドの商を返す |
a==b | 左右のオペランドを比較し、等しければ1、それ以外は0を返す |
3.三項演算子(ternary operator)
a >= 1 ? 1 : 0
これは、「aが1以上の場合は1を、それ以外は0を返す」という演算です。?の左オペランドが1つ、「?」と「:」の間に1つ、?の右のオペランドが1つあり、合計3つの項があるので「三項演算子」になっています。この三項演算子を「条件演算子」と呼びます。
4.オペランド(operand)とは
演算の働きをもった記号はオペレーター或いは演算子(operator)と呼ばれ、その演算対象をオペランド(operand)と呼びます。演算子の使い方によっては、異なる結果を出すものもあり、その使い方について詳しく知っていると、プログラムの予期せぬ動作の不具合修正などのバグフィックスが楽になることがあります。
ここまで理解できたら、あなたは次のような例題に解答できるはずです。
5.演算子の理解を問う例題
「オペランドの少なくとも1つが負符号の除算は、結果が処理系に依存する」ことを示すプログラムを作成せよ。