基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
よねかわ

基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

#1

投稿記事 by よねかわ » 14年前

基本的な質問で申し訳ありません

一般論として、
基本int型のサイズ(byte数)はOSのdata bus のサイズと同じと考えても宜しいでしょうか。

例えば、64bitのwindows版のC言語中のintは64bitであるとか、、、

宜しくお願いします。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

#2

投稿記事 by beatle » 14年前

intのサイズは64ビットOSであっても32ビットになったりします.
intのサイズを決めるのはコンパイラです.

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

#3

投稿記事 by beatle » 14年前

ああ,それから,よねかわさんは
「int型のサイズ(byte数)」
と書いているにも関わらず,その後に
「64bitのwindows版のC言語中のintは64bit」
などと書いていますが,8bits=1byteとは限らないためご注意を.

たかぎ
記事: 328
登録日時: 15年前
住所: 大阪
連絡を取る:

Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

#4

投稿記事 by たかぎ » 14年前

OSのdata busというのがよくわかりませんが...

基本的には、CPUのアキュムレータまたは汎用レジスタのサイズと同じだと思います。
ただ、本来であれば64ビットにすべきだけれど、後方互換性のために32ビットにしている場合も多々あります。
実際、64ビットのWindowsでは、少なくともよく使われている処理系については、int型は64ビットではなく32ビットです。
MacOSやLinuxでも同じです。

ローエンドの機種でも同様の状況があります。
例えば、H8/300HやH8Sの汎用レジスタは32ビットですが、ルネサスの純正コンパイラではint型は16ビットになっています。
なお、GCCの場合は、16ビットと32ビットをコンパイルオプションで選択できるようになっています。

ちなみに、8ビットのCPUで、アキュムレータが8ビットしかないような場合でも、int型は16ビットになります。
なぜなら、int型は少なくとも-32767~+32767の範囲を表現できなければならないからです。
ただし、CLike言語の類や非標準処理系の場合はこの限りではありません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

#5

投稿記事 by softya(ソフト屋) » 14年前

VC++のx64の場合はintは32bitですね。
なのでintが64bitになるかはコンパイラとOSモデル次第と言った所でしょうか。

「64ビット - Wikipedia」
http://ja.wikipedia.org/wiki/64%E3%83%9 ... 7.E3.83.AB

[補足]誤解されそうな書き方なので補足。コンパイル時にint型は何bitか決まってしまうのでOSが64bitを強制すると上手く動かないことも考えられます。なので従来の仕様に合わせられる所は合わせておいた方が無難ってこともあるでしょう。
それと別の方向から考えるとOSの仕様にコンパイラの仕様を合わせるしか無いという事情もあります。逆にOSを作るのはC/C++のコンパイラ言語ですからOSの仕様を決めるのはコンパイラの仕様ってことにもなります。卵が先か鶏が先かって話なんですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

よねかわ

Re: 基本int型のサイズ(byte数)はOSのdata bus のサイズと同じ??

#6

投稿記事 by よねかわ » 14年前

みなさん
良くわかりました。
ほんとうにありがとうございました。

これからも宜しく願い致します。

閉鎖

“C言語何でも質問掲示板” へ戻る