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
単位はバイト。