プログラミング+α学習ブログ

勉強したことの備忘録です。

型の大きさを表示するプログラム

#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演算子が生成する値の型は、ヘッダ中で定義されるsize_t型である。

typedef宣言

以下のように宣言すると、size_tはunsignedの別名となる。

typedef unsigned size_t;

多くの処理系で、size_tはこのように宣言されているため、size_tはunsignedの別名となる。

書式文字列内の変換指定と、表示する値の型が食い違うといけないので、size_t型の値を表示するときはunsignedでキャストする。