• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:値の渡し方?(初心者))

値の渡し方?(初心者)

このQ&Aのポイント
  • 関数の中では、計算は正しく行われていて、結果が正しいことが分かりましたが、メイン文の出力では、変な値が出てきてしまいます。値の渡し方がおかしいのでしょうか?
  • プログラムについて新たに質問です。メインプログラムと関数プログラムを組みましたが、メイン文の出力に変な値が出てきてしまいます。値の渡し方がおかしいのでしょうか?
  • 関数の中では計算は正しく行われていることが分かりましたが、メイン文の出力に変な値が出てきてしまいます。値の渡し方が間違っているのかどうか、アドバイスをお願いします。

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

質問で提示のプログラムをいくつかの環境で(*)動かして見ましたが、いずれも 4の printf() で出力した値と、main() の printf() は、同じ値が出ます。 使っているコンパイラとOSは何ですか?   (*) unix の cc     Windows の VC++4.2     Windows の gcc 2.95.2

acac
質問者

お礼

前回のアドバイスの通りちゃんとやってみたら、ちゃんとできてました。 次点にしてしまって申し訳ありませんでした…m(__)m ちなみに、結局間違っていたのは配列の添え字の使い方でですか? あと、変数の%lfと%fの問題ですか? なんだか腑に落ちないんですけどね…次にまた同じところで引っかかってしまうのではないかと心配です。 でも、とにかくたくさんお世話になりました!! ありがとうございます。

その他の回答 (3)

noname#30727
noname#30727
回答No.4

読み直してみたら、大ボケな事を書いてしまった事に気づきました。 printf の %lf で正しく表示されているのですね。 失礼しました。

noname#30727
noname#30727
回答No.3

motsuan さんの仰っている通りだと思います。 非常にまぎらわしいのですが、 scanf の %f は float を意味しますが、printf の %f は double を意味します。 printf の %lf が double でないコンパイラもあるので、printf 側は %f を使用するべきだと思います。

  • motsuan
  • ベストアンサー率40% (54/135)
回答No.2

printf("4 %lf\n",y); printf("x= %f y= %f\n",x,y); の%lfと%fの違い、 あるいは %lf でyの値が壊れているのではないでしょうか? ちなみに私のVC++6.0でも正常に動作しているようです。 printf("4 %lf\n",y); return y; を printf("4 %lf\n",y); printf("4 again %f\n",y); return y; とやってみるとわかるのではないでしょうか? ちなみに%lfって標準のfの標準のプレフィクスではないのではないでしょうか?