C 基本講座

型変換について

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、2種類以上の型が混在する式で演算を行う場合に生じる「型変換」について説明します。
講師:
05:33

字幕

このレッスンでは2種類以上の型が混在する式で演算を行う場合に生じる型変換について説明します。型変換にはコンパイラが自動的に行う暗黙の型変換とプログラマーが行う明示的型変換があります。異なる型で演算を行なった場合、プログラマーが意識していなくてもコンパイラはそれぞれの型により一定の規則で型変換を行います。この自動的な変換は演算時と代入時にそれぞれ行われます。式中に異なる型の定数や変数が現れた時には精度の高い型に統一して演算します。これは Bool < char < short <int < long < long long <float < double < long doubleの順になります。確認するためにプログラムを使って確認してみましょう。この short 型の sh_dt はsizeof 演算子で大きさを調べると2バイトになっています。この short 型のsh_dt と long 型の l_dt、この掛け算を行なった結果をsizeof 演算子で確認すると4バイトになっています。これは long 型が4バイトなので4バイトになるのです。 Mac の場合にはlong 型は8バイトなので8になると思います。この後、double 型のd_dt を加算すると全体として一番大きな型はdouble 型ですのでsizeof 演算子を使うとdouble 型の型サイズ8が表示されています。つまり一番精度の高い double 型に変換されたことになります。一方代入時には常に左辺の型に変換されます。今この d_ans はdouble 型ですのでshort 型の sh_dt を代入しても特に問題は生じません。このように精度の小さい型から精度の大きな型へ代入が行われる場合には値や符号は保存されるのです。けれどもこの例のようにint 型の i_ans にdouble 型の d_dt を代入する場合には大きな型から小さな型への代入になり問題が生じます。d_dt は 3.4 で少数点以下がありますがi_ans はこの場合、小数点以下を int 型なので保存することができません。そのため、小数点以下が切り捨てられてこのように 1.0 と表示されています。このように精度の低い型への変換の場合にはコンパイラに依存した変換が適宜行われることになります。型変換はキャスト演算子を使うことでプログラマーの手によっても行うことができます。 これを明示的型変換と呼びます。キャスト演算子はこのように型名を括弧で囲んで式の前に記述します。例えばこの例の場合、int の a に 10、b に4が代入されその a ÷ b の結果をx に入れています。x は double 型ですのでプログラマーは、この x に 2.5 を期待しているかもしれませんがこの int ÷ int の計算で小数点以下が切り捨てられx の内容は 2.0 になってしまいます。このような時にキャスト演算子を使ってdouble でキャストすることによりこのように double で演算が行われるので2.5 と小数点以下も出力させることができるようになります。尚、この場合 a と b の両方を double でキャストしても良いのですがa を double でキャストしておけば暗黙の型変換により結果として double で演算されるのでこの例のように記述するのが一般的です。片方だけキャストしておけば良いでしょう。またこのように括弧で囲んでしまうとint ÷ int の計算が先に行われ小数点以下が切り捨てられてしまうのでdouble でキャストする意味がなくなります。ですから括弧はつけないようにしてください。 このレッスンでは2種類以上の型が混在する式で演算を行う場合に生じる型変換について説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。