sizeof(long int)
C言語のプログラミングで、型によってどの程度の数を記憶できるのかを説明することが多い。
注意して欲しい点としては、int型(32bit) = -231〜0〜231-1のあと、64bit を扱う場合はどう宣言するか。
今までは、long int は 実装により 32bit かもしれないし、64bit かもしれないので、64bit を使いたい場合は「gcc なら long long int 型を使って…」と説明していた。
しかし、説明資料を作っていたら、long int=32bit と思っていたけど、64bitだった。
改めて、最近の状況を確認したら、
- OSが “x86” なら long int = 32bit , long long int = 64bit
- OSが “x86_64” なら long int = 64bit , long long int = 64bit
なのね。
size_t 型
ちなみに、C言語では、malloc( ) に渡すメモリサイズなどは、2GB(231)を超える場合も想定する必要がある。このため、int で不具合が出る場合/出ない場合でプログラムを書き換えることがないように、size_t 型が定義されている。
実際には、以下のような typedef が #include <stdio.h>などの中で宣言されている。
((32bit)) typedef int size_t ; ((64bit)) typedef long long int size_t ;