2012-02-18 8 views
4

関数の戻り値を特定のレベルに上げる必要があるコードを少し書いています。私は最近、累乗に '^'演算子を使用することは役に立たないことを発見しました。これはC++では実際にはXOR演算子なのです。pow()from math.h library - 関数を使用して適用する方法

int answer = pow(base, raisingTo(power)); 


これが正しければ今、誰も私を伝えることができます:?今ここに私が書きたいコードですかコードを説明します。あなたが知っているようにint変数の宣言を宣言し、 'power'という他の変数に作用するraisingTo()関数の戻り値に 'base'という変数の値を初期化しました。これを行うと(Visual C++ 2010 Express Editionで&のコードをコンパイルすると)、 'pow'という単語の下に赤いダッシュが表示され、「overloaded function 'pow'の複数のインスタンスが引数に一致しますリスト "

誰かが私のためにこの問題を解決してもらえますか?そして、皆さんもこのpow()関数が実際にどのように機能するかを私に説明することができますか?私はまだ初心者であるので、正直なところ、www.cplusplus.comの参考文献はちょっと混乱します。

+0

私はコンピュータプログラミングの初心者ではありません。私はC++の初心者です。ありがとう、ジョーイ。 –

+0

@ジョイそれは良いプログラミングスキルを強制します。 –

+0

@RamSidharthあなたのコードが上に書かれているように、あなたは精度を失うでしょう。他のものでは、pow()から返される数値は切り捨てられます。また、私はVisual Studioがあまりにも多くの作業をしていて、そうしてはいけないときに途方に暮れることがわかりました。 –

答えて

6

documentationはすでにかなり明示的に述べていない:

pow(int, int)過負荷が利用できなくなっています。このオーバーロードを使用すると、コンパイラはC2668 [編集:それはあなたが得るエラーです]を放出する可能性があります。この問題を回避するには、最初のパラメーターをdouble、float、またはlong doubleにキャストします。また

ベース電力を計算するあなただけ

pow(base, power) 

そして、上記のヒントでの書き込み:

int result = (int) pow((double)base, power); 
+0

あなたの答えをありがとう、ジョーイ。 –

+0

@Joey pow()の返り値をキャストする必要がありますが、通常C++は値を切り捨てて "answer"にします。それとも、このVSが途方に暮れているのですか? –

+0

マイクD:いいえ。私はCであなたがキャストしなければならないと思います。私はそれがC++で必要かどうかの手がかりはありません。 – Joey

0

POW()関数は、doubleかのどちらかを返します。 floatですので、最初の手順はを変更することですこれらのうちの1つに。第二に、raisingTo()は何を返すのですか?あなたが明白でない何かをしていない限り、あなたはそれを必要としませんが、それでも動作するはずです。また、両方の引数はthisに従ってdoublesである必要があります。

+0

お返事ありがとうございました、Mike D. –

関連する問題