• ベストアンサー

【C言語】 型のサイズについて

C言語の学習をしております初心者です。 型のサイズについてですが、int型のサイズは処理系に依存する、 ということをよく聞きますが、この「処理系」というのは そのアプリケーションを動作させるマシンに搭載されている"CPU"を 指しているのでしょうか? それとも"OS"を指しているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

既にあるように、同じOSやCPUのマシンでも、intサイズが違うコンパイラはあります。 処理系定義の原文は、implementation-definedです。 訳文だと分かりにくいですが、つまり「言語仕様に対する"実装(implementation)"」が決めることであって、 ここでいう処理系というのは、一般にコンパイラ(と標準ライブラリ)を指します。 implementation-definedを決定するのは、コンパイラ(や標準ライブラリ)の作者です。 (逆に言うと、作者はこれらを決めなければいけません) まぁ、intサイズの場合、execution environmentに依存するので、 *コンパイラの作者* が、対応するOSやらCPUやらを考慮して決定すると思いますので、 たいていの場合は同じCPU、OS用のコンパイラは同じような値になりますが。

masy0312
質問者

お礼

非常に参考になりました。 ありがとうございます!!

その他の回答 (3)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

C言語でいう「処理系」は、大きく分けて「翻訳処理系」と「実行処理系」に分けられます。「翻訳処理系」はいわゆるコンパイラのことですし、「実行処理系」はプラットフォーム(CPUやOSなど)のことです。 一般に「処理系」という場合はこれら両方の総称です。 たとえば、「処理系はGCCです」といっても、それはコンパイラの名前ですので、ターゲットが分かりません。GCCはWindowsやLinuxなどのほか、組込み機器でも使用されるからです。

masy0312
質問者

お礼

「処理系」にも分類があるんですね。 参考になりました。ありがとうございます。

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

処理系はコンパイラを指す。 同じCPU、同じOSでもコンパイラが異なればintサイズが変わることはある。また同じコンパイラでも設定により変わることがある。

masy0312
質問者

お礼

了解しました。ありがとうございます!!

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

処理系の「系」は、 goo辞書 - 系 http://dictionary.goo.ne.jp/search.php?MT=%B7%CF&kind=jn&mode=0&base=1&row=0 | (1)ある関係のもとにつながった統一体。体系。 | (4)〔system〕物理・化学・生物などの分野で、一定の相互作用や相互連関のもとにある、もしくはあると想定されるものから成る全体。力学系・生態系・神経系・開放系など。 CPUもOSも含めたシステムの全体を指しますので、どちらかという事ではないです。 一般的には、概ねCPUを指す場合が多いですが、同じCPUでOSなりビルド環境なりを変更すれば、int型のサイズが違うって環境を作り出せなくは無いかと。 CPUの中での、いわゆるレジスタなんかのサイズは決まっている場合が多いですので、小さいint型のサイズを定義した場合には、レジスタの一部のみしか使ってないような事にもなるかも知れませんが…。

masy0312
質問者

お礼

なるほどですね。ありがとうございます!!

関連するQ&A