*C言語* 〜11時限目〜 演算子の優先順位について・・・
〜目次〜
演算子の優先順位とは
a+7*2
上記の式の場合、
7*2が先に評価されます。
複数の演算子は1つの式の中で組み合わせて使うことが可能です。
通常の四則演算では、足し算よりも掛け算の方を先に計算しますね。
これは、数式の規則では、
足し算よりも掛け算の方が「優先順位が高い」からです。
そして、演算子の優先順位を変更させることもできます。
通常の数式と同じように、
カッコを使って、カッコ内を優先的に評価させます。
同じ優先順位の演算子を使う
同じ優先順位の演算子を同時に使った場合について考えます。
通常の、四則演算では、優先順位が同じ場合、
「左から順番」に計算をしていますね。
このような演算の順序のことを左結合と呼びます。
逆に右から評価される演算子もあり、
これを右結合と呼びます。
例を出すと、
a = b = c;
の場合、
a = (b = c);
というように右から評価されます。
大きなサイズの型に代入する
代入演算子と型の関係について、
まず見ていきます。
以下のような変数に値を代入するコードを入力してください。
sample18.c
ーsample18の実行画面ー
身長は177cmです。
double型の変数に代入します。
身長は177.000000cmです。
sample18では、
int型の変数の値をdouble型の変数に代入しています。
すると、int型の値はdouble型に変換されて代入されることになります。
一般にC言語では、
大きなサイズの型の変数に小さなサイズの型の値を代入する
ことが可能です。
代入するときに型が変換されるのです。
型が変換されることを、
型変換
と呼びます。
小さなサイズの型に代入する
逆に小さなサイズの型の変数に、
大きなサイズの型の値を代入した場合どうなるのか見てみます。
sample19.c
ーsample19の実行画面ー
身長は177.700000cmです。
int型の変数に代入します。
身長は177cmです。(値の一部が失われる場合があります)
小さなサイズの型に変換した場合には、
その型で表すことのできない部分は、
切り捨てられることになります。
小さなサイズの型の変数に代入する場合には、
このように値の一部が失われる可能性があるので、
注意をして型変換を行ってください。
キャスト演算子を使う
型が変換されるときには、
型を変換することをコードの中で明示的に書いておく
ということができるようになっています。
キャスト演算子(cast operator)
という演算子を見てみます。
(型)式
キャスト演算子は、
指定した式の型を、( )中で指定した型に変換する
という演算を行うものです。
sample19の代入している部分について、
キャスト演算子を使い書き換えると、
inum = (int)dnum;
となります。
実行結果は先ほどと同じです。
キャスト演算子を使うことで、
どの型に変換しているのかを明示的に書くことができます。
〜END〜