dポイントプレゼントキャンペーン実施中!

Cの型の中にint と long int がありますけどこの違いは何なのでしょうか?本にはどちらも4ビットの整数(long intは長整数となっていますが)-2147486648~2147483647となっていますが・・。
同様にdouble と long double は何が違うのでしょうか?
初歩的なところですがよろしくおねがいします。

A 回答 (4件)

各種類の値が何バイトになるのかはC言語としては決まっていません。


コンパイラによって色々です。intが2バイトでlong intが4バイトのものもあれば、intもlong intも4バイトのものもあれば、intが4バイトでlong intが8バイトのものもあります。
doubleとlong doubleも同じ関係。
    • good
    • 0
この回答へのお礼

そういうものなんですか。相対的にint より long intの方が長くなるという感じなんですね。回答ありがとうございます。

お礼日時:2009/05/01 22:45

ああそうそう,


・double が 8バイトで long double が 12バイト
って環境はあった.
ちなみに「int と long long int が一致する」ならその間に挟まれる long int も自動的にそれらに一致しますし, 「long long double」なる型は (規格には) 存在しません.
    • good
    • 0

Cでデフォルトの型でもある「int」は、一番高速に計算できるビット数になります。


たいていの場合は、利用しているコンパイラが何ビットモードでコンパイルしているかに依存します。

「int」が「long int」に一致するというのならば、32bitのコンパイラで確認しているのでしょう。
もしも、これが64bitだった場合、「int」は「long long int」に一致することになります。

異なるビットの環境で動かない時というのは、こういった部分が原因している場合が多いです。

もしも、コーディングしていて、幅がかわったら困るような時は
stdint.h をインクルードして int16_t など利用するとよいと思います。
あるいは、「int」でなく「short int」と記述するか。。。

「double」の方はわかりません。
でも、おそらくは同じ理由で64bitモードならば「long long double」に一致するのではないでしょうか。
    • good
    • 0
この回答へのお礼

型もコンパイラにあわせて考えないといけないですね。
int自体の大きさも固定ではないのですね。回答ありがとうございます。

お礼日時:2009/05/01 22:50

いかなる場合においても「long int は int より短かくない」し「long double は double より短かくない」ということ*だけ*は確実です.


ただしこれらが違うかどうかは処理系に依存しますし, 具体的にこれらの型が何バイトであるかも規格には定められていません.
ぶっちゃけていえば, 規格上は「long が 1バイトの環境」だってあっていい.
    • good
    • 0
この回答へのお礼

やはり相対的なもので個々は決まってないということなんですね。
回答ありがとうございます。

お礼日時:2009/05/01 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A