2014年09月一覧

[c言語] 型変換(キャスト)について

型変換(キャスト)

では、今回は型の変換についてみていきましょう。
まず、次のプログラムを見てください。

#include <stdio.h>

int main()
{
printf(“%f\n”, 1/2);
return 0;
}
これは1/2の計算結果を画面上に表示するというごく簡単なプログラムですが、
一体この計算結果はどのように表示されると思いますか?

実は0.000000と表示されてしまうのです。

私達は当然0.5と表示されることを期待している訳ですが、整数と整数の計算結果は整数になるというルールがありまして、小数点以下の数値は問答無用で 切り捨てられてしまうのです。そのため、この計算結果は0となってしまったのです。

では、0.5の結果を得ようと思ったらどうすればよいのでしょうか?答えは簡単!実数同士の演算にしてしまえばよいのです。

printf(“%f\n”, 1.0f/2.0f);
これで、期待通りの0.500000という結果を得ることができました。

また、これ以外にも、型キャストを利用することによって強引に整数値を実数値に変換してしまうという方法もあります。例えば最初のプログラムを次のように書きなおすことによって期待する結果を得ることも可能です。

printf(“%f\n”, (float)1/(float)2);
また、C言語においては、異なる型同士の演算がサポートされています。つまり、整数と実数という異なるデータ型同士の演算も可能ということです。例えばint型とfloat型の計算を行う場合、 int型のデータは自動的にfloat型に変換されることになるのです。このことを型の昇格といいまして、昇格の関係は大雑把に次のようになっています。
char ⇒ int ⇒ long ⇒ float ⇒ double
この型の昇格がサポートされているお陰で、次のように書いても、期待する結果を得ることができます。

printf(“%f\n”, 1.0f/2);
では最後に、型キャストに関する注意事項を話しておきましょう。

例えばchar型からint型への変換は問題ありませんが、逆にint型からchar型へ変換する場合などは注意が必要です。int型という大きいサイズをchar型の小さいサイズに強引に変えてしまう訳ですから、 データが一部損失してしまう可能性があるのです。

では次の例を見てください。

#include <stdio.h>

int main(int, char**)
{
int a=123456;
printf(“%d\n”, (char)a);
return 0;
}
この場合の表示結果は64となってしまい、データが損失していることが確認できます。
ただ、このキャストによりデータが損失してしまうという性質を利用して、
float型から int型にキャストして小数点以下の切り捨てを行うこともできます。


 



メルマガ登録をお願いします。

素敵な?情報がいつもあなたに届くようになります。(itmnewsの記事が届きます。)お役に立つかどうかわかりませんが頑張りますっ。登録してみてください。


 




[C言語] cast(キャスト)とは

型キャスト
型キャストとは、一時的に変数の型を変換するものです
ある一部分の演算で浮動小数点の小数部を切り捨て、int型として算術したい場合などに有効です

型キャストは評価する値の前にデータ型を指定します

(型) 値

これを用いれば、浮動小数点などに以下のような演算を可能とします

型キャストを用いることによって、代入演算などもより柔軟に対応することができます



メルマガ登録をお願いします。

素敵な?情報がいつもあなたに届くようになります。(itmnewsの記事が届きます。)お役に立つかどうかわかりませんが頑張りますっ。登録してみてください。


 




まさかの噴火

映画でもあまりこの発想の展開は残酷すぎてないと

思うが、ニュースを聞いて2011年のテロと同じ感覚を受けた。

発想できない怖さ。登山の行楽地での突然の噴火。予測はできないものなのか。

当時200人近く現場にいたのであれば、相当の状況だったろう。

人間は自然的警戒察知能力がないのか、他の生物もそうなのか。

あえて自然の危険が迫る直前の場所に近づいてしまうのは

なにか生物学的には不自然な動きな気もする。噴火直前の兆候を知りたい。

例えば、微振動や音、においなど。これで同じことを富士山や大涌谷とかで

繰り返したらほんとに今回の件は生かされない。

それか各地域の休火山、活火山(ちなみに御嶽山は活火山だったのかな?)を調べ、

入山の規定を見直したほうがよいのでは。

 

 

 



メルマガ登録をお願いします。

素敵な?情報がいつもあなたに届くようになります。(itmnewsの記事が届きます。)お役に立つかどうかわかりませんが頑張りますっ。登録してみてください。