int main(int argc, char** argv) { printf("sizeof(char): %d, sizeof(short): %d, sizeof(int): %d, sizeof(long) : %d, sizeof(float): %d, sizeof(double): %d, sizeof(char*): %d, sizeof(int*): %d\n", sizeof(char), sizeof(short), sizeof(int), sizeof(long), sizeof(float), sizeof(double), sizeof(char*), sizeof(int*)); return 0; } /* 実行結果: kamada@cygwin% ./data_B.exe sizeof(char): 1, sizeof(short): 2, sizeof(int): 4, sizeof(long) : 4, sizeof(float): 4, sizeof(double): 8, sizeof(char*): 4, sizeof(int*): 4 */注意しておきますと、char*, int* はともに 4byte= 32bit になっています。 というのも、これらはポインタでアドレスを扱うには 32bit 必要だからです。 これは、64bit address 空間を使う OS などでは、値が変わってくることでしょう。
あとは、好きなものを使ってください。 整数や浮動小数点を使いたいときは、自分の使いたい精度に合わせたデータを使ってくれればOKです。 あとは、処理系が内部で適当にやってくれます。 例えば、double のサイズは 8byte なので、ポインタ演算の際の "+ 1" の意味も内部では変わってきます。 でも、皆さんが気にする必要はありません。 詳しく知りたい場合は、例えば、intの場合のプログラムを double に変えて試してみてください。
2001.11.12/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp