TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜11時限目〜 演算子の優先順位について・・・

〜目次〜

 

 

演算子の優先順位とは

a+7*2

上記の式の場合、

7*2が先に評価されます。

複数の演算子は1つの式の中で組み合わせて使うことが可能です。

通常の四則演算では、足し算よりも掛け算の方を先に計算しますね。

これは、数式の規則では、

足し算よりも掛け算の方が「優先順位が高い」からです。

C言語演算子の場合も同じです。

そして、演算子の優先順位を変更させることもできます。

通常の数式と同じように、

カッコを使って、カッコ内を優先的に評価させます。

 

同じ優先順位の演算子を使う

同じ優先順位の演算子を同時に使った場合について考えます。

通常の、四則演算では、優先順位が同じ場合、

「左から順番」に計算をしていますね。

このような演算の順序のことを左結合と呼びます。

C言語の+演算子も左結合的な演算子です。

逆に右から評価される演算子もあり、

これを右結合と呼びます。

代入演算子は右結合的な演算子です。

例を出すと、

a = b = c;

の場合、

a = (b = c);

というように右から評価されます。

一般的に、単項演算子と代入演算子は右結合的な演算子です。

 

大きなサイズの型に代入する

演算子オペランドには密接な関係があります。

代入演算子と型の関係について、

まず見ていきます。

以下のような変数に値を代入するコードを入力してください。

sample18.c

f:id:YuyaTerayama:20180903143850p:plain

ーsample18の実行画面ー

身長は177cmです。

double型の変数に代入します。

身長は177.000000cmです。

sample18では、

int型の変数の値をdouble型の変数に代入しています。

すると、int型の値はdouble型に変換されて代入されることになります。

一般にC言語では、

大きなサイズの型の変数に小さなサイズの型の値を代入する

ことが可能です。

代入するときに型が変換されるのです。

型が変換されることを、

型変換

と呼びます。

 

小さなサイズの型に代入する

逆に小さなサイズの型の変数に、

大きなサイズの型の値を代入した場合どうなるのか見てみます。

sample19.c

f:id:YuyaTerayama:20180903144432p:plain

ーsample19の実行画面ー

身長は177.700000cmです。

int型の変数に代入します。

身長は177cmです。(値の一部が失われる場合があります)

小さなサイズの型に変換した場合には、

その型で表すことのできない部分は、

切り捨てられることになります。

小さなサイズの型の変数に代入する場合には、

このように値の一部が失われる可能性があるので、

注意をして型変換を行ってください。

 

キャスト演算子を使う

型が変換されるときには、

型を変換することをコードの中で明示的に書いておく

ということができるようになっています。

キャスト演算子(cast operator)

という演算子を見てみます。

(型)式

キャスト演算子は、

指定した式の型を、( )中で指定した型に変換する

という演算を行うものです。

sample19の代入している部分について、

キャスト演算子を使い書き換えると、

inum = (int)dnum;

となります。

実行結果は先ほどと同じです。

キャスト演算子を使うことで、

どの型に変換しているのかを明示的に書くことができます。

 

〜END〜