0430名無しさん@お腹いっぱい。
2017/08/11(金) 23:18:49.53> 64bitは人が扱う数字としてはでかすぎるんだよ。だから多くの環境でintは32bitで止まったんだよ。
別に止まってはいない。今は32bit時代のソフトがまだ残っているので互換性を維持するためにint = 32bitで
コンパイルする場合が多いというだけ。いずれ64bitが当たり前になればint = 64bitが普通になる。
メモリモデルは以下の表のようにLP32からILP64まであるので、マシンに合わせてどれでも使える。
それに、C言語の仕様は、整数型char、short、int、long、long longの型はいずれもサイズまでは
指定されておらず、実装によってまちまちになっている。
[各変数と実際のビットサイズ表]
整数型 LP32 ILP32 LLP64 LP64 ILP64
char 8 8 8 8 8
short 16 16 16 16 16
int 16 32 32 32 64
long 32 32 32 64 64
long long 64 64 64 64 64
今は64bitレジスタが普通に使えるのに、ソースが古くて64bitでコンパイルが通らないから
32bitのままコンパイルしとこう、というものぐさなことをする人が多いだけだと思う。
まあソースが山ほどあって直すのが面倒だという気持ちもわからなくはないが。