ページ 1 / 1
INTについて
Posted: 2007年2月22日(木) 10:21
by try
こんにちは。初歩的すぎる質問なんですが教えてください。
INTの取りうる数値は4バイトでいいんですか???
なんか参考書によっては「INTの範囲は「-32768~32767」だ」などと書いてあるんですが・・・
VC++のヘルプでは「-2億~+2億」とか書いてあるんで・・・実際VCでもその値の範囲ですし・・・
それともこれはVC特有の仕様?ボーランドでは違うとか???
いったいどっちなんですか???
Re:INTについて
Posted: 2007年2月22日(木) 10:30
by box
> INTの取りうる数値は4バイトでいいんですか???
小文字のint型のことですか?そのように仮定します。
int型が何バイトの領域を占めるかは
sizeof(short) <= sizeof(int) <= sizeof(long)
という決まりがあります。
ある処理系ではshort型と同じ領域を占めるかもしれませんし、
別の処理系ではlong型と同じ領域を占めるかもしれません。
sizeof(int)を2とか4に決めつけるようなコードを書くとまずい、
ということになります。
Re:INTについて
Posted: 2007年2月22日(木) 11:41
by try
ご回答ありがとうございます。
・・・では、たとえば関数で「0~100000程度の引数」を使いたい場合は
どのように関数を定義したらいいんでしょうか・・・
Re:INTについて
Posted: 2007年2月22日(木) 11:53
by box
> ・・・では、たとえば関数で「0~100000程度の引数」を使いたい場合は
どの処理系でも動かしたい場合は、引数の型をlongにしておけば
間違いないと思います。
sizeof(int)が2であるような処理系(例:LSI C-86)では
絶対に動かさないことがわかっていれば、int型でもよいでしょう。
Re:INTについて
Posted: 2007年2月22日(木) 11:54
by keichan
移植性を考える必要がなく、VCまたはBorlandコンパイラを使用するのであれば
int または long で問題ありません。
Re:INTについて
Posted: 2007年2月22日(木) 11:56
by try
では大方4バイトと思って大丈夫なんですね。2バイトは例外的だということで・・・
ご回答ありがとうございました。
Re:INTについて
Posted: 2007年2月22日(木) 13:43
by keichan
>では大方4バイトと思って大丈夫なんですね。2バイトは例外的だということで・・・
あまりに古いコンパイラ、及び特殊な環境で実行されることを想定して作成されたコンパイラでなければ。
という条件が正しいですね。