型の大きさを表示するプログラム
#include <stdio.h> int main(void) { printf("sizeof(char) = %u\n", (unsigned)sizeof(char)); printf("sizeof(signed char) = %u\n", (unsigned)sizeof(signed char)); printf("sizeof(unsigned char) = %u\n", (unsigned)sizeof(unsigned char)); printf("sizeof(short int) = %u\n", (unsigned)sizeof(short int)); printf("sizeof(unsigned short) = %u\n", (unsigned)sizeof(unsigned short)); printf("sizeof(int) = %u\n", (unsigned)sizeof(int)); printf("sizeof(unsigned) = %u\n", (unsigned)sizeof(unsigned)); printf("sizeof(long int) = %u\n", (unsigned)sizeof(long int)); printf("sizeof(unsigned long) = %u\n", (unsigned)sizeof(unsigned long)); return (0); }
実行結果
sizeof(char) = 1
sizeof(signed char) = 1
sizeof(unsigned char) = 1
sizeof(short int) = 2
sizeof(unsigned short) = 2
sizeof(int) = 4
sizeof(unsigned) = 4
sizeof(long int) = 8
sizeof(unsigned long) = 8
文字型と整数型
一定の範囲の整数を表現する。
符号付き整数型(signed integer type)
signedあるいはunsignedの型指定子(type specifier)を与えることによって、"正・0・負"を表す。
符号無し整数型(unsigned integer type)
"0・正"のみを表す。
signedもunsignedも与えられない整数型は、符号付き整数型となる。
sizeof演算子(sizeof operator)
sizeof(型名)とすると、その型の大きさを調べることができる。例えば、文字を表現するchar型の大きさは1となる。
単独のshortやlong
intが省略されたものとみなす。
単独のsignedやunsigned
shortやlongではない単なるint型であるとみなす。
size_t型
sizeof演算子が生成する値の型は、
typedef宣言
以下のように宣言すると、size_tはunsignedの別名となる。
typedef unsigned size_t;
多くの処理系で、size_tはこのように宣言されているため、size_tはunsignedの別名となる。
書式文字列内の変換指定と、表示する値の型が食い違うといけないので、size_t型の値を表示するときはunsignedでキャストする。