• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のpow関数の不具合)

C言語のpow関数の不具合

このQ&Aのポイント
  • C言語のpow関数の不具合について
  • pow関数の不具合によりプログラムが正常に動作しない
  • pow関数の引数に変数を渡すとエラーメッセージが表示される

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.6

math.h のライブラリにある関数を使うには、libm をリンクする必要があるので、gcc のコマンドラインに -lm という指定が必要です。 printf などの関数は、libc に入っており、これは指定しなくても参照されます。 pow(10,-1)で -lm がなくてもエラーにならなかったのは、他の方が書いてますが、コンパイラが結果を計算してしまって実際にpowを呼ぶようなコードを生成しなかったからでしょう。 つまり、printf("%f",pow(10,-1)); が、printf("%f",1e-1); に最適化された。

rkkysh
質問者

お礼

コマンドラインに -lmを入れると正常にPOW(10、X)の計算ができました。ありがとうございます。

その他の回答 (5)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.5

じゃなくてコンパイルできなくて困ってるなら cc に -lm 付ければ。

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.4

定数だとコンパイラが結果を埋め込んじゃうからじゃない?

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.3

もしくは、引数は double,double double,int 等が正しいので両方ともdoubleにキャストしてみるとか

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.2
  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

>なぜかpow関数の中に変数を入れるとプログラムが動きません。 私の環境では 0.100000 と表示されました。 windows7 vs2013

関連するQ&A

専門家に質問してみよう