符号付き変数、符号無し変数の書き方

C言語では、符号付き変数、符号無し変数宣言は以下のように記述します。

signed 型 変数名;
unsigned 型 変数名;

上が符号付変数、下が符号無し変数です。

スポンサーリンク

サンプルプログラム

ソースファイル名:main.c

実行方法

今回は実行はしません。
unsinged の書く位置のみ注意してください。

符号付き変数と符号無し変数とは

符号とは、"+"、"-" の事です。
符号付き変数は、+- の数字を扱える変数、符号無し変数は - を扱わない変数のことです。

つまり、符号無し変数では、

a = -1;

という代入はできません。

それなら常に符号付き変数で宣言しようと思うでしょう。
しかし、符合無し変数にもメリットはあるのです。

それは、"-" がない分、"+" 方面への変数の有効幅が増える事です。
変数の講座でも書いた通り、通常、char 型は、

-127 ~ 127

が有効範囲です。
これを符号無し変数にすると、-127から0までの分が"+"の方向に付加されます。
つまり、符号付き変数より"+"方向に128有効幅が増えます。
結果として、

0 ~ 255

までが有効範囲となるのです。

変数の宣言方法とは?

では、符号付き変数と符号無し変数はどうやって宣言するのでしょうか?
符号付き変数の時は、

signed char a;

というように、型の前にsignedを付加したます。
または、

char a;

符号付き変数の場合は、上記のように signed を省略して宣言する事もできます。

符号無し変数は、

unsigned char a;

というように、型の前に unsigned を付加します。
unsigned は省略する事はできません。

一般的に signed は省略して書くので、unsigned が付いていなければ符号付き変数となります。

符号無し変数の有効範囲

unsigned char 0 ~ 255
unsigned short 0 ~ 65535
unsigned long 0 ~ 4294967295
unsigned int 16bitマシン:0 ~ 65535
32bitマシン:0 ~ 4294967295

これも、char と short くらいは有効幅を覚えておくと良いでしょう、
long や int は上限を超えるという事がほとんどないので、覚えなくても大丈夫だと思います・・・

スポンサーリンク