質問: visual c++では問題があるのにgccではうまくいく理由 visual c++(2005)付属のコマンドラインのコンパイラを使って(cl)コンパイルしたプログラムでは、出力したい値を格納するdouble型の変数の値が、-1.#ind00となってしまうのに対して、 まったく同じソースをgccでコンパイルした場合には、普通の数値が正常に出力され、その値は事前の予想どおりの傾向を持っていることから、まちがってはいないようです。 clではうまくいかず、gccではうまくいくのはなぜなのでしょうか。 関係があるかどうかわかりませんが、値の算出の過程でrand()を使っています。
回答: 何かしらバグがあるとしか言えません。 そもそもコンパイラが別物なので、たまたまうまくいっちゃったとか、言語仕様の観点からは間違ってないのにうまくいかないということも多々あります。 極端な例では、デフォルトで stdio.h をインクルードする仕様のコンパイラで学習をしていた子が、それに慣れたせいでvc++ではコンソールに文字列を表示することすらできなかったというケースがありました。