void 以外の基本データ型には修飾子をつけることによって、よりきめ細かく指定することができる。データ型修飾子には次の4つがある。
- long
- short
- signed
- unsigned
long と short はそれぞれデータサイズが変わる。といっても ANSI の規定が厳密じゃないみたいなので、処理系によって違うらしい。signed と unsigned は符号つきか符号なしかの違い。省略すると符号つきと解釈される。
データ型修飾子はそれぞれ適用できるデータ型が決まっているので、表にまとめてみた。
| short | int |
| long | int, double |
| signed | char, int |
| unsigned | char, int |
それぞれのデータサイズは次のプログラムで確認してみる(ググって調べた)。
#include
int main(void)
{
printf("char = %lu\n", sizeof(char));
printf("int = %lu\n", sizeof(int));
printf("short int = %lu\n", sizeof(short int));
printf("long int = %lu\n", sizeof(long int));
printf("float = %lu\n", sizeof(float));
printf("double = %lu\n", sizeof(double));
printf("long double = %lu\n", sizeof(long double));
return 0;
}
takatoh@nightschool $ gcc --version gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. takatoh@nightschool $ ./sample_4_1 char = 1 int = 4 short int = 2 long int = 8 float = 4 double = 8 long double = 16
単位はバイト。