- ベストアンサー
int型の表せる範囲
VC++6.0 on win2kです。 int型の表せる範囲は3万ぐらいまでだと思っていたのですが、 #include <stdio.h> #define Max 1000000 void main(){ for(int i=0;i<Max;i++){ printf("%d\n",i); } } というプログラムを走らせると普通に出ます。 int型の範囲とは何を意味するのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
intの範囲は環境に依存します。 Win32では、intは符号付32bitです。
その他の回答 (4)
- furlong
- ベストアンサー率50% (17/34)
doubleの範囲は<float.h>に書かれています。でも、人が読んで分かる表現で書かれているかどうかは場合によりけりです。 #include <float.h> printf ("Max double value is %e\n", DBL_MAX); printf ("Max float value is %e\n", FLT_MAX); などとやってみてください。
お礼
今回は甲乙つけがたいのでポイントは先着順にさせていただきます。 ありがとうございました。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>そうか、機種依存するのは、intとunsigned intのみなので、 >わざわざLIMITS.Hのようなファイルに書く必要はないわけですね。 じゃなくて、浮動小数点は書けないんですよ。 >int型がどこまで使えるかを判定するプログラムを作らなければいけない、と。 普通はしませんが・・・ とりあえず、sizeof(int)で4だったら32bitってことで。
お礼
今回は甲乙つけがたいのでポイントは先着順にさせていただきます。 ありがとうございました。
- sha-girl
- ベストアンサー率52% (430/816)
>double型などはどこに書いてあるのでしょうか? double型は8バイトの浮動小数点です。 10進数だと有効桁数は15~16桁です。 それ以上の桁になると +1しても切り捨てられます。 MSDNによると 「double 型の値の範囲がおおよそ 1.7E-308 ~ 1.7E+308 になります。」 と書いてあります。
お礼
そうか、機種依存するのは、intとunsigned intのみなので、 わざわざLIMITS.Hのようなファイルに書く必要はないわけですね。 すると、プログラムを最初に書くときは、 int型がどこまで使えるかを判定するプログラムを作らなければいけない、と。 ありがとうございました。
- mrumesuke
- ベストアンサー率45% (254/557)
LIMITS.Hでは #define INT_MAX 2147483647 /* maximum (signed) int value */ と定義されています。
お礼
なるほどこのファイルに書いてあると。 double型などはどこに書いてあるのでしょうか? 探してみましたが、なさそうなんですが・・・
お礼
そうでしたか。ありがとうございました。 環境と型の扱える範囲が一覧になっているようなHPはご存じないでしょうか?