スポンサーリンク

【C言語】#3 変数宣言の文

ぷーたろー
ぷーたろー

プログラムでデータを取り扱うには、データを格納するための場所が不可欠です。データには数値や文字などの様々な姿があり、それぞれに対応した形式で準備する必要があります。

スポンサーリンク

変数宣言の文とは

変数宣言の文とは、新たな変数の準備をコンピュータに指示する文です。変数とは、データを格納するためにコンピュータ内部に準備する箱のようなもので、プログラムがあるかう数値や文字などの情報をこの箱に納めたり取り出しながら処理を進めていきます。

変数宣言の文

型 変数名;

#include <stdio.h>

int main(void)
{
    int age; 変数宣言の文(ageという箱を用意)
    age = 20; 箱に数値20を入れる
    printf("%d¥n", age); 箱の内容を表示
    return 0;
}

下記のプログラムでは、変数ageに値20を入れ、それを取り出して画面に表示しています。このように、変数に値を入れることを代入、取り出すことを取得と言いますが、どちらの操作も変数を宣言した後にしかできません。

変数を宣言するには、次の2つを必ず指定します。

  1. 変数名(データを格納する箱の名前)
  2. 型(変数の種類や大きさ)

型とは、変数に収めることができるデータの種類を言います。例えば、変数宣言の文で示した「int」は整数を表す型です。この型で宣言された変数ageには整数しか入れることができません。小数や文字の値は格納できないのです。

変数の名前

変数を宣言する際には、変数に名前をつける必要があります。C言語プログラムでは変数以外のものにも名前を付けることがありますが、それらの名前として使える文字や数字の並びのことを識別子 (identifer)と言います。通常は、アルファベットや数字、_(アンダースコア)などを組み合わせて作ります。

識別子のルール

識別子には、命名ルールや慣習があります。

1. 予約後は使用できない

C言語には、変数名として使用してはいけない単語が35個程あります。これらを予約語(keyword)と言います。例えば、intやvoid、returnなどは予約語ですので、変数名として利用することはできません。

2. 先頭に_を1つ付けた名前は使用しない

先頭に_(アンダースコア)記号を1つ付けた名前は、C言語自体のために予約されています。よって予約語同様、使用を避ける必要があります。

3. 既に利用している変数名は使えない

既に変数を宣言しているプログラムでは、再び同じ変数を宣言することはできません。2つの変数を区別できなくなってしまうためです。

4. 大文字/小文字、全角/半角は区別される

C言語では、大文字/小文字、全角/半角の違いは完全に区別されます。例として、変数nameと変数Nameは別のものとして扱われます。

5. 小文字で始まる分かりやすい名前が望ましい

変数には、小文字で始まる名詞形の名前を付ける慣習があります。aやsのような1文字の変数名、dataやflagなどの抽象的で内容が分かりにくい変数名は避け、誰もが想像しやすい具体的な変数名が望ましいでしょう。

代表的な型(8種類)

プログラムで扱うことのできるデータの種類を、データ型(data type)または単に型といいます。C言語には多くの種類の方が用意されています。まずは、基本となる8つの型を紹介します。

整数を格納する4つの型(char・short・int・long)

char型、short型、int型、long型の変数には、整数を代入できます。
これら4つの型には、コンピュータ内部に確保されるメモリの量に違いがあります。

注意ポイント

C言語では、整数型のサイズについて明確には決められていません。実際には、利用するコンパイラやCPUによってサイズが変化する可能性があります。例として、int型が2バイトや8バイトの環境も実在します。
当時は、メモリが貴重かつCPUの処理能力が低かったため2バイト以下の変数を使い分ける必要がありました。現在のPCは、性能が良いため、整数を使いたい場合は、int型を採用しておけば問題ないでしょう。

整数型格納可能な整数範囲消費メモリ
char型±約1281バイト
short型±約3.2万2バイト
int型±約21億4バイト
long型±約21億
±約900京
4バイト
8バイト
一覧表
サイズの調べ方
printf("%dバイト¥n", (int)(sizeof(long)));

赤マーカーの箇所に、調べたい型名を入れると、自分の環境における厳密なサイズを調べることができます。

小数を格納する2つの型(float・double)

float型とdouble型の変数には、小数部分を含む数値を代入できます。
この2つの型は、少数を浮動小数点という形式で管理していることから、浮動小数点(floating point type)と総称されることもあります。

メモリ消費量精度の違い
double height; height = 175.5;
float weight; weight = 65.5F;

double型の方がfloat型より多くのメモリを消費しますが、より精度の高い計算を行えます。そのため、特別な事情がない限り、通常はdouble型を利用します。

重要なポイント

浮動小数点方式は、「真に厳密な計算ができない」という弱点があります。計算した際に、わずかな誤差が生じることがあります。通常は無視できるほどの小さな誤差であっても、それが積み重なると大きな問題となることもあるため注意が必要です。
誤差が許されない計算では、float型とdouble型を用いてはいけません。

真偽値を格納する型(bool)

bool型は、YesかNoか、本当か嘘か、成功か失敗といった二者択一の情報を格納するための型です。肯定的な情報を意味するtrue否定的な情報を意味するfalseのどちらかの値のみを代入できます。

bool isError; isError = true;   ▶︎エラーである
bool result; result = false;    ▶︎結果は失敗
使用する際のポイント

trueは真、falseは偽という意味であるから、bool型のことを真偽値型といいます。なお、この型を使用するためにはソースコードの先頭に、「#include<stdbool.h>」という宣言を追加する必要があります。

文字を格納する型(char)

コンピュータの内部では、全ての文字に文字コードという数値が割り振られています。例えば、半角のAには65、_には95、{には123が割り振られています。C言語が誕生時、半角1文字分の文字コード情報を変数に格納するために、char型がよく用いられていました。そのため、char型は「整数型」であると同時に文字を入れるための型「文字型」としても利用されています。

char langName;
langName = 'C';   処理としては、langName=67;と同じこと。 ※Cは(文字コード67)
使用する際のポイント

しかし、次のようなコードを書くと、コンパイルエラーが発生します。

char element;
element = '山';

容量が1バイト、つまり256種類の文字しか格納できないchar型では、何千種類もの文字がある日本語文字(ひらがな・カタカナ・漢字などの全角文)を扱えません。全角文字を格納できる文字型には、「wchar_t型」あります。なお、C言語プログラムにおいて1文字という場合は、通常、半角文字(1バイトのASCII文字)を指します。

タイトルとURLをコピーしました