• ベストアンサー

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型の範囲とは何を意味するのでしょうか?

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

intの範囲は環境に依存します。 Win32では、intは符号付32bitです。

noname#108554
質問者

お礼

そうでしたか。ありがとうございました。 環境と型の扱える範囲が一覧になっているようなHPはご存じないでしょうか?

その他の回答 (4)

  • furlong
  • ベストアンサー率50% (17/34)
回答No.5

doubleの範囲は<float.h>に書かれています。でも、人が読んで分かる表現で書かれているかどうかは場合によりけりです。 #include <float.h> printf ("Max double value is %e\n", DBL_MAX); printf ("Max float value is %e\n", FLT_MAX); などとやってみてください。

noname#108554
質問者

お礼

今回は甲乙つけがたいのでポイントは先着順にさせていただきます。 ありがとうございました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>そうか、機種依存するのは、intとunsigned intのみなので、 >わざわざLIMITS.Hのようなファイルに書く必要はないわけですね。 じゃなくて、浮動小数点は書けないんですよ。 >int型がどこまで使えるかを判定するプログラムを作らなければいけない、と。 普通はしませんが・・・ とりあえず、sizeof(int)で4だったら32bitってことで。

noname#108554
質問者

お礼

今回は甲乙つけがたいのでポイントは先着順にさせていただきます。 ありがとうございました。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

>double型などはどこに書いてあるのでしょうか? double型は8バイトの浮動小数点です。 10進数だと有効桁数は15~16桁です。 それ以上の桁になると +1しても切り捨てられます。 MSDNによると 「double 型の値の範囲がおおよそ 1.7E-308 ~ 1.7E+308 になります。」 と書いてあります。

noname#108554
質問者

お礼

そうか、機種依存するのは、intとunsigned intのみなので、 わざわざLIMITS.Hのようなファイルに書く必要はないわけですね。 すると、プログラムを最初に書くときは、 int型がどこまで使えるかを判定するプログラムを作らなければいけない、と。 ありがとうございました。

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

LIMITS.Hでは #define INT_MAX 2147483647 /* maximum (signed) int value */ と定義されています。

noname#108554
質問者

お礼

なるほどこのファイルに書いてあると。 double型などはどこに書いてあるのでしょうか? 探してみましたが、なさそうなんですが・・・

関連するQ&A