★変数について2★


変数について」でも書いたように、変数には様々な型があり、型によって表現できる範囲が異なります。

変数の型の範囲を超えた値を代入すると、思ったとおりの値が出てこない場合があります。

※範囲を超えているのですから、正しく表示される保障はありませんよね。


<sample program col013-01>

#include <stdio.h>

int main(void)
{
    char data = 200;

    printf("data = %d\n", data);
}

<実行結果>

data = -56
続行するには何かキーを押してください・・・

char型の変数dataに200を代入していますが、結果は-56です。

char型の表現可能範囲は、-128〜+127までです。

200はchar型の表現範囲を超えていますので、きちんと表現できていません。

では、なぜ-56になるのでしょうか?

説明する前に、次の例も実行してみましょう。


<sample program col013-02>

#include <stdio.h>

int main(void)
{
    unsigned char data = 300;

    printf("data = %d\n", data);
}

<実行結果>

data = 44
続行するには何かキーを押してください・・・

unsigned char型の変数dataに300を代入していますが、結果は44です。

unsigned char型の表現可能範囲は、0〜255までです。

300はunsigned char型の表現範囲を超えていますので、きちんと表現できていません。

では、なぜ44になるのでしょうか?

これらのことには理由がありますが、理由を説明するために2進数から勉強しましょう。

なぜ、2進数かというと、コンピュータ内部での数値表現は2進数が基本だからです。

では「2進数について」を見てください。


ブラウザの戻るボタンで戻ってください。