Phase #02

データ型と変数/定数


1.データ型とは - What's Data Type? -

プログラムではいろいろな「データ」を扱います。それが複雑な三角関数の計算結果であろうが、人の名前であろうが人間にとっては同じ「データ」として扱えますよね?
しかし、コンピュータはデータをいろいろな「型」に分けて管理しています。これがデータ型と呼ばれる物です。これだけではよくわからないかもしれません。
変数のイメージそこで、変数という物と一緒に考えるとわかりやすいと思います。
変数というのは「データを保存しておく箱のようなもの」と考えて下さい。この箱には1つ1つ名前を付けられます。そして、箱にはいろいろな種類があって中に入れられるものが決まっているのです。
まだこれでもよく分からないかもしれません。それでは型にはどんなものがあるのかみていきましょう。

2.データ型の種類 - Kinds of Type -


C 言語の基本的な型は次の 4つがあります。
☆文字型 char
文字 1 文字を表します。バイト(*)幅は 1 バイトです。よって、表現範囲は -128 〜 127 です。
☆整数型 int
整数をあらわします。バイト幅は環境によって違いますが、2 バイトもしくは 4 バイトです。
よって、表現範囲は 2 バイト場合は -32,768 〜 32,767、4 バイトの場合は -2,147,483,648 〜 2,147,483,647 です。
☆単精度実数型 float
なんか難しい名前ですが、小数も表現できる実数タイプという事です。
バイト幅は 4 バイトです。よって、表現範囲は -3.4E38 〜 3.4E38 (* E:指数表現) の間の 7 桁までです。
☆倍精度実数型 double
これは float よりも表現できる範囲が広いものです。バイト幅は 8 バイトです。
よって、表現範囲は -1.7E308 〜 1.7E308 の間の 15 桁までです。
他にもいろいろな型が存在します。それが次のようなものです。
☆符号無し文字型 unsigned char
"unsigned" とは「符号無し」つまり正数ということです。逆に「符号あり」は "signed" です。
普通 signed は省略されるので "signed char" と "char" は同じということになります。
この型は符号がないため表現範囲は 0 〜 255 です。
☆符号無し整数型 unsigned int
同様に符号なしで、表現範囲は 2 バイトの場合 0 〜 65,535、4 バイトの場合 0 〜 4,294,967,295 です。
☆ 2 バイト整数型 short, unsigned short
整数値を表現でき 2 バイトです。int のように環境によって変わることはなく固定です。
☆ 4 バイト整数型 long, unsigned long
整数値を表現でき 4 バイトです。int のように環境によって変わることはなく固定です。

ではデータ型を実際使うにはどうするのでしょう?一番よく使う例である変数宣言でみてみましょう。
変数を宣言してあげることによりコンピュータは実行時にデータを保存するための領域をメモリ上に確保します。この領域の大きさとか使い方とかを的確に指示するためにデータ型がとても重要なのです。
変数の宣言の仕方は次のような形式になっています。


 型宣言子 識別子 [識別子, 識別子, ...]

 型宣言子と識別子の間には1つ以上の空白が必要。
 識別子を複数個記述する場合は「 , 」で区切る。


型宣言子とは、先ほど出てきた int とか float とかです。識別子とは「変数の名前を表現するもの」程度で構いません。識別子には使える文字が決まっていたり、31文字までというような規則があるのですが、普段それほど気にしなくてもいいでしょう。機会があれば細かく説明したいと思います。
それで、例えば、「文字型」で「moji」という名前の変数を使いたい場合は、次のように宣言します。

  char moji

「文字型」で「moji1」と「moji2」という2つを宣言したい場合はそれぞれ2回かいても間違いではありませんが、次のようにした方が手間も省けるしすっきりします。

  char moji1, moji2

同じ要領で同じ型の変数に限って複数個の宣言が同時に出来ます。
実際に変数を使うときには「その箱に値を入れる」、つまり代入をしますが、このときに定数表現を使うのです。

3.定数表現 - Number of Constant -


定数とはその字通りある定まったデータのことを表現してします。
難しく聞こえるかも知れませんが知ってしまえば「そんな程度か」なので大丈夫です(笑)
定数は大まかに分けて 数値定数、文字定数、文字列定数 の 3 種類だけです。順に見ていきましょう。
A.数値定数
これは普段使っている数と対して変わりませんが、C 言語独特のものもあります。
◇整数定数
普通の 7 とか 34 とかの数です。C 言語独特のものとして、頭に "0" がついていると 8 進数
"0X" または "0x" がついていると 16 進数
です。
つまり、034 だったら 10 進数では 28、0x34 だったら 10 進数で 52 ということになります。
◇倍長整数定数
整数定数の最後に " l " (エル) を付けただけです。
long や unsigned long で宣言された変数に代入する場合に使います。
◇浮動小数点定数
普段使う小数のあとに"e"または"E"をつけた指数表現をつかいます。
例えば、1508 という数は 1508.0 と表せるし、15.08 X 1021.508 X 103 と表しても数自体は変わりません。これらの指数表現を C 言語では 15.08E2 とか 1.508e3 というように表します。

B.文字定数
これは普通の文字をシングルコーテーション「 ' 」で囲んで表現します。
例えば、文字 g を表したければ 'g' とかくわけです。
しかし、一部例外があります。エスケープシーケンスと呼ばれるもので、改行や「文字のない」ことを表すヌル文字といった特別な文字です。これらは「 \ 」と組み合わせて表記されます。改行であれば「 \n 」といったような感じになります。
その一部を表します。
 '\a' 警告音をならす
 '\n' 復帰改行(リターン)
 '\t' タブ
 \0' ヌル文字
さてここで 1つ疑問が生じます。もし、「\」「n」という文字が連続してしまったら、改行になってしまうのではないか?
大丈夫です。同じように「 \ 」を「 \\ 」にすればいいのです。
これと同様に、シングルコーテーション「 ' 」やダブルコーテーション「 " 」もそれぞれ「 \' 」「 \" 」となります。

C.文字列定数
これも読んで字の如くです。表現方法はダブルコーテーションで囲むだけです。
「How are you?」という文字列は "How are you?" と表記すればいいということですね。
文字列は「文字列型」という型ではなく、文字型 char の集まりとして表現されます。
文字列の最後には自動的にヌル文字 '\0' が付け加えられ、文字列の終わりを表しています。
あと、日本語を使うときには注意をしなければなりません。
それはひらがなや漢字といった文字は、1 文字で 2 バイト使っているということです。
つまり、"日本語"という文字列は char 型で 6 つの領域、つまり 6 バイトだということです。
このようなことから 2 バイト文字の扱いには十分気を付けなければなりません。



今回はデータ型のことを中心に進めてきました。いまいちピンとこないかもしれませんが、実際使っていくうちに理解できるようになります。
概念的には難しくはないと思います。しかし、正しいプログラミングをするためにはもっとも重要なことがらなのでしっかり把握しておきましょう。


Jump to Phase #01Phase #01: C 言語を使ってみよう へ
Phase #03-1: 式と演算子(1) へJump to Phase #03

△戻る
▲トップに戻る