TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜9時限目〜 式の仕組みについて・・・

〜目次〜

 

式の仕組みについて

コンピュータは色々な処理を、「計算」することで行います。

そこで、

式(expression)

について学んでいきます。

C言語の「式」の多くは、

演算子(演算するもの:operator)

オペランド(演算の対象:operand)

を組み合わせで作られています。

例で、「1+2」の場合、

「+」が演算子

「1」、「2」がオペランド

にあたります。

式の「評価」というものもあり、

「計算」をイメージしたとき、

この「計算」が、式の評価にあたります。

例で1+2が評価されると3になります。

評価されたあとの3のことを、「式の値」と呼んでいます。

 

式の値を出力する

以下のコードを入力することで、

式の値を出力することができます。

sample14.c

f:id:YuyaTerayama:20180903010133p:plain

ーsample14の実行結果ー

1+2は3です。

7*7は49です。

注意するところは、C言語の掛け算では*という記号を使います。

このように、画面に出力される値は、

式が評価されたあとの値となります。

 

色々な計算をする

式の中で、演算の対象(オペランド)になるのは、

一定の値だけではありません。

以下のコードを入力してみてみます。

sample15.c

f:id:YuyaTerayama:20180903010728p:plain

ーsample15の実行画面ー

変数num1の値は3です。

変数num2の値は7です。

num1+num2の値は10です。

変数num1の値に1を足すと4です

上記のコードのように、

変数もオペランドとして使うことができます。

num1 = num1+1

については、左右が等しくないに=記号はおかしく見えます。

しかし、C言語での=記号は「等しい」という意味ではなく、

「値を代入する」という機能を持つものです。

なので、このような記述が可能になるのです。

応用して、キーボードから入力した値を変数に格納し、

計算させることもできるのです。

実際に自分でコードを入力してみてください。

いままでの内容を理解していれば、できるはずです。

余談ですが、プログラムを学んでいく上で大事になるのは、

実際にコードを入力して、動かしてみることです。

 

色々な演算子

C言語には+や*以外にも多くの演算子が存在します。

以下がまとめたものです。

f:id:YuyaTerayama:20180903012708p:plain

演算子にはオペランドを1つとるもの、2つとるものなどがあります。

オペランドを1つとる演算子のことを、

単項演算子(unary operator)

と呼ぶこともあります。

 

インクリメント・デクリメント演算子

プログラムを作成するにあたり、よく使われる演算子である、

「++」という演算子についてです。

この演算子は次のようにして使います。

num++;

++演算子はインクリメント演算子と呼ばれ、

「インクリメント」とは、値を1増やす演算のことです。

num = num+1;

は、

num++;

と同じ処理になります。

一方-を2つ続けた「--」はデクリメント演算子と呼ばれ、

「デクリメント」とは、値を1減らす演算のことです。

num = num-1;

は、

num--;

と同じ処理になります。

 

インクリメント・デクリメントの前置と後置

インクリメントとデクリメント演算子は、

オペランドの前と後ろのどちらにでも使うことができます。

num++;

++num;

というような記述の仕方ができるということです。

後ろに置く場合を「後置インクリメント演算子

前に置く場合を「前置インクリメント演算子

と呼びます。

この表記の違いで実行結果が異なる場合もあります。

例で、

int a = 0;

int b = 0;

が変数としてあり、

b = a++;

後置インクリメント演算子の場合、

変数bにaの値を代入してから、aの値を1増やす

という処理を行います。

b = ++a;

前置インクリメント演算子の場合、

aの値を1増やしてから、変数bにaの値を代入する

という逆の処理が行われるため、

出力結果が異なるようになります。

前者の場合では、変数bを出力するとが出力され、

後者の場合では、変数bを出力するとが出力されます。

デクリメント演算子でも、同じことが言えるので、

両方の演算子を使う際には、

前置か後置かで出力結果が異なる場合があるので、

注意して使ってください。

 

代入演算子などについては、次の時限で扱います。

 

〜END〜