2020年12月
 12345
6789101112
13141516171819
20212223242526
2728293031  

検索・リンク

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 ;