4

そのため、関数の戻り値を特定の累乗にする必要があるコードを少し書いています。私は最近、べき乗に '^' 演算子を使用しても役に立たないことを発見しました。これは、C++ では実際には XOR 演算子またはそのようなものであるためです。今ここに私が書きたいコードがあります:

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


これが正しいかどうか、誰か教えてもらえますか?コードを説明します。皆さんが知っているように、私は int 変数 answer を宣言し、それを「base」と呼ばれる変数の値に初期化し、「power」と呼ばれる他の変数に作用する raiseTo() 関数の戻り値に上げました。これを行うと (そして Visual C++ 2010 Express Edition でコードを編集してコンパイルすると)、「pow」という単語の下に赤いダッシュが表示され、次のエラーが表示されます。 list"

誰かこの問題を解決してくれませんか? また、この pow() 関数全体が実際にどのように機能するかについても説明していただけますか?率直に言って、私はまだ初心者なので、www.cplusplus.com の参照は少しわかりにくいです!

4

2 に答える 2

6

ドキュメントには、すでにかなり明示的に記載されています。

オーバーpow(int, int)ロードは使用できなくなりました。このオーバーロードを使用すると、コンパイラは C2668 [EDIT: That's the error you get]を発行する可能性があります。この問題を回避するには、最初のパラメーターを double、float、または long double にキャストします。

また、基本電力を計算するには、次のように記述します

pow(base, power)

そして上記のヒントで:

int result = (int) pow((double)base, power);
于 2012-02-18T23:07:02.930 に答える
0

doublepow() 関数は aまたは aを返すfloatため、最初のステップはanswerそれらのいずれかに変更することです。第二に、何がraisingTo()戻ってくるか。明らかでないことをしていない限り、それは必要ありませんが、それでも機能するはずです。また、これdoublesによると、両方の引数は である必要があります。

于 2012-02-18T23:11:50.353 に答える