64Bit OSである Windows Server 2003 + VS 2003.NET の Cや C++では intのサイズはいくつになるのでしょうか? 同様の条件でメモリのアドレスのサイズは?
すみません タイトルが途中で切れてしまいました。m(__)m
「 64Bit OSの intとメモリアドレスのサイズについて 」
基本的に、ポインター以外は32ビットのままです。
ポインターだけ64ビット幅になります。
が、細かい所では、size_t や time_t が64ビット幅になったり、
APIの一部のパラメータが64ビット幅に変更された新しい物が
用意されてたりします。
詳しくはプラットフォームSDKのヘルプを見ると良いと思います。
(英語ですが・・)
Toshi さん こんにちは
回答ありがとうございます。
昔読んだ参考書に intとポインタのサイズは OSの Bit数に依存するとあったので気になったのですが。
intは 32Bitのままなんですね 64Bit にしたら doubleと同じですもんね
>昔読んだ参考書に intとポインタのサイズは OSの Bit数に依存するとあったので>気になったのですが。
OSでは無くて、CPUのBit数に依存するですね。
その認識は間違って無いのですが、最近Cベースの言語定義も時代と共に
変わってきててですね・・
今時は CPUのBit数 = int とは限らず、
「各Cコンパイラのデータモデル実装方式により、型精度が決まる」
と言った方が正しい認識だと思います。
データモデルには LP32、ILP32、ILP64、LLP64、LP64 等が有ります。
それぞれのデータモデルでの型精度は
http://www.unix-systems.org/version2/whatsnew/login_64bit.html
に一覧が出ています。
ちなみに、64bit-WindowsのVCが採用しているデータモデルは LLP64
(略称 P64 とも言う)です。
>OSでは無くて、CPUのBit数に依存するですね。
ごめんなさい Toshiさんの仰る通り CPUの Bit数でした。m(__)m
とても参考になりました,ありがとうございました。
ツイート | ![]() |