C/C++のデータ型と書式を知る:基本的なデータ型

沖林正紀
2008-02-07 08:00:00
  • このエントリーをはてなブックマークに追加

基本的なデータ型

 C/C++における基本的な4つのデータ型を紹介しよう。値の範囲やバイト数はMinGW(gcc 3.4.5)の場合で示す。これらはchar型、int型などのようにいうこともある。

char:文字型

 文字型といっても、実際は1バイト分の-128から127までの数値を表すことができるデータ型だ。unsigned charと記述される場合は0から255までを扱うことになる。そのため文字コード用の型と捉えたほうが良いかもしれない。

 文字コードを扱うにしては、数値の範囲が狭いように思うかもしれない。C言語が誕生した当時は半角英数字と記号および改行などの制御コードのみを含むASCIIコードさえ表現できればよかったからだ。

 そうはいっても、日本語文字を含む文字コードは、それよりはるかに大きな値を扱うことになるため、複数バイトで文字コードが表現される文字を「ワイド文字」とし、wchar_tという型で表すこともある。

int:整数型

 1, 23など小数点がつかない数値を表す。言語処理系によって2バイトもしくは4バイト分の数値を扱える。2バイト分なら-32768から32767まで、4バイト分なら-2147483648から2147483647までとなる。ワイド文字用のwint_tというデータ型もある。

 intの前に修飾子を添えると、以下のような型を派生させることができる。

unsigned int
0以上の整数(0から65535)
short int
intと同程度かそれ以下の範囲のみ扱える。shortだけでも同じ。(-32768から32767)
unsigned short int
short intを0以上のみ表せるようにしたもの(0から65535)
long int
扱える範囲がintより広い。longだけでも同じ(-2147483648から2147483647)
unsigned long int
long intを0以上のみ表せるようにしたもの(0から4294967295)

float 符号付き単精度浮動小数点型(4バイト分)

double 符号付き倍精度浮動小数点型(8バイト分)

 どちらも1.2, 34.5など小数点付きの数値を扱うデータ型だが、floatよりもdoubleのほうが扱える数値の範囲が広くなる。そのため、floatよりもdoubleのほうが精密な値を表すことが可能になる。

 しかし、それほどの精密さを要求されないのであれば、floatを使うほうが良いかもしれない。ただ、関数を利用するときなど、開発者が意識しなくても自動的にfloatからdoubleに変換されていることがよくあるので、その手間を省きたいのであれば、最初からdoubleを用いるほうが良いだろう。

 また、doubleからはlong double(12バイト分)を派生させることができるが、floatではそれができないという違いがある。

書式との関連

 書式とは、データを入出力する際のデータの並び方をいうが、C/C++の場合は、書式とデータ型とが密接に関連している。次回はこの書式について紹介したい。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]