- ベストアンサー
C言語の変数の型がわかりません
C言語の変数の型がわかりません [int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. [long int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. のようなことが書いてあります. [int]と[long int]の違いは何ですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>今はどちらを使っても同じということなのですか? 『32ビット環境であれば』ほぼ同じです。 コンパイラの型チェックでエラーになる場合もありますので、区別はしておいた方がいいですが。 組み込み機器計では16ビットのマイコンを使用している場合もありますから、 安易に「intとlong intは同じ」とか思っているとハマることになりますが。 int型変数で65535に+1したら0になったり、int型変数に80000を代入したら14464になったり…。
その他の回答 (2)
- Hirorin_20
- ベストアンサー率20% (136/648)
変数を整数として扱う場合intergerといいます。 intはそのコンパイラーが16ビットでしたら16ビット、32ビットでしたら32ビットです。 C言語を扱う場合、32ビットが多いのでintとしたとき普通32ビット(4バイト)になります。でも16ビットのコンパイラーに移植したら16ビットになります。longは32ビットです。 後、32ビット整数は-2147483648~2147483647ですよ。
お礼
ありがとうございます. コンパイラーによってintはビット数が変わって,long intは32ビットで固定なのですね. 今使っているコンパイラーは32ビットなので今のところ問題はないようです. これからもよろしくお願いします.
C言語が出来上がった時代には、 intとlongは、本来データの長さが違います。 int:8ビット long:16bit とか。。 しかし、CPUの1回でアクセスするデータ長(ワード長)は8>16>32>64と長くなってきましたので、こういう変な関係になってしまったのでしょう。
補足
ありがとうございます. 今はどちらを使っても同じということなのですか? これからもよろしくお願いします.
お礼
ありがとうございます. 同じとは考えないことにします. 環境によって変わるのですね. これからもよろしくお願いします.