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

沖林正紀
2008/02/07 08:00

C/C++のデータ型と書式の基礎をおさえておこう。

基本的なデータ型

 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++の場合は、書式とデータ型とが密接に関連している。次回はこの書式について紹介したい。

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
RIAやAjaxによりインターフェイスデザインの幅が広がりました。「正しいデザイン」へのアプローチを、テクノロジーとメソドロジー両方の切り口で、具体的にご紹介するリアルイベントです。
  • 今日のトップ記事
  • 3日前
  • 4日前
  • 5日前
  • 6日前
  • 7日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ