C言語

【C言語】演算子(operator)の使い方【→プログラム初心者向け】

how to use operator of C language
プログラム女子
プログラム女子

「演算子」って何ことなのかな...?

C言語では、「演算子」を使って数字を足し算、引き算などの計算をしたり、数字を比較したりするんだけど、種類がいろいろあるので、それを説明するね。

Tommy
Tommy

C言語の演算子(operator)の概要

summary of operator of C language

この記事では、C言語の演算子の種類と、それぞれの役割について説明します。

演算子は、主にプログラムで変数と変数を演算(計算)するために使われます。

例えば、1+1を計算する時の「+」が演算子に該当します。

変数とは、プログラムを使うユーザーから入力される数字などプログラムとして決めることができない、「変わる数字」のことです。

例えば、

f=x^2+16x^2+60

という方程式を考えた場合、変数は

x

になりますが、このXは方程式をみた人が自由に値を入力することができるので、この「X」を変数と呼びます。

演算子にはたくさんの種類があり、言語によってもさまざまです。

この演算子の使い方次第で、プログラムを短く簡潔に書くことができたり、変数の意味を明確にしたり、言語によっては文字列を操作することができたりします。

C言語の演算子(operator)を使う環境

environment of using operator of C language

演算子の使い方を確かめるためには、C言語プログラムを実行する必要があります。

C言語を使う開発環境の作り方については下の記事で説明しています。

こちらではレンタルサーバを使ったC言語プログラムの実行方法を説明しています。

まだプログラム実行環境ができていない人はこちらの記事を読んでください。

【C言語】linuxでの開発環境の作り方【→プログラム初心者向け】

C言語の演算子(operator)の種類

kinds of operator of C language

演算子には、「単項演算子」、「2項演算子」、「3項演算子」という大きく3つの種類があります。

これらそれぞれの役割について説明します。

単項演算子(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つ取るので、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項演算子になっている。これは条件演算子と呼ばれる。

オペランド(operand)とは

演算の働きをもった記号はオペレーター或いは演算子(operator)と呼ばれ、その演算対象をオペランド(operand)と呼びます。

演算子の使い方によっては、異なる結果を出すものもあり、その使い方について詳しく知っていると、プログラムの予期せぬ動作の不具合修正などのバグフィックスが楽になることがあります。

例えば、次のような例題はいかがでしょうか?

例題

「オペランドの少なくとも1つが負符号の除算は、結果が処理系に依存する」ことを示すプログラムを作成せよ。

-C言語
-,

Copyright© Tommy's blog , 2020 All Rights Reserved Powered by AFFINGER5.