- ベストアンサー
intとlongは同じ?
#include <stdio.h> #include <limits.h> int main() { printf("%d\n%d", INT_MAX, LONG_MAX); return 0; } 出力 214783647 214783647 Win7 64bit (VC++2010) CentOS 32bit (gcc) どちらの環境でも同じ出力結果となりました。 intとlongなぜ同じになってしまったのでしょうか。
#include <stdio.h> #include <limits.h> int main() { printf("%d\n%d", INT_MAX, LONG_MAX); return 0; } 出力 214783647 214783647 Win7 64bit (VC++2010) CentOS 32bit (gcc) どちらの環境でも同じ出力結果となりました。 intとlongなぜ同じになってしまったのでしょうか。
補足
なるほど。 CPUのbit数に依存するのですか。 しかし、新たに疑問が生まれてしましました。 > 32ビットシステムの場合は同じになります。 CPU は i7 2600K OS は Win7 64bit を利用しています。 Intel® CoreTM i7-2600K Processor (8M Cache, up to 3.80 GHz) http://ark.intel.com/products/52214/Intel-Core-i7-2600K-Processor-(8M-Cache-3_40-GHz) ここを見るかぎり64bitCPUなので、 intは64bit分となると思いました。 しかし、VC++ 2010コンパイラでx64としてコンパイルしても intは64bit分(8バイト分)とらず、 2147483647 2147483647 と出力されました。 なぜなのでしょうか。 64bit CPU / 64bit OSでもintは32bitが上限なのでしょうか。 今後128bit OSや128bit CPUが出てきた時もintは32bitが上限となるのでしょうか。