重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (5件)

intの範囲は環境に依存します。


Win32では、intは符号付32bitです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/15 10: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);

などとやってみてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/17 01:43

>そうか、機種依存するのは、intとunsigned intのみなので、


>わざわざLIMITS.Hのようなファイルに書く必要はないわけですね。

じゃなくて、浮動小数点は書けないんですよ。


>int型がどこまで使えるかを判定するプログラムを作らなければいけない、と。

普通はしませんが・・・
とりあえず、sizeof(int)で4だったら32bitってことで。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/17 01:43

>double型などはどこに書いてあるのでしょうか?



double型は8バイトの浮動小数点です。
10進数だと有効桁数は15~16桁です。
それ以上の桁になると
+1しても切り捨てられます。

MSDNによると
「double 型の値の範囲がおおよそ 1.7E-308 ~ 1.7E+308 になります。」
と書いてあります。
    • good
    • 0
この回答へのお礼

そうか、機種依存するのは、intとunsigned intのみなので、
わざわざLIMITS.Hのようなファイルに書く必要はないわけですね。

すると、プログラムを最初に書くときは、
int型がどこまで使えるかを判定するプログラムを作らなければいけない、と。
ありがとうございました。

お礼日時:2003/06/15 15:48

LIMITS.Hでは



#define INT_MAX 2147483647 /* maximum (signed) int value */

と定義されています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/15 10:50

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