だからPythonでは、私がしなければならないのは
print(3**4)
81
Cでこれを行うにはどうすればよいですか?少し検索してexp()
関数と言いましたが、使用方法がわかりません。事前に感謝します
math.h
ヘッダーのpow();
関数が必要です。
構文
#include <math.h>
double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);
ここで、xは底で、yは指数です。結果はx^y
です。
使用法
pow(2,4);
result is 2^4 = 16. //this is math notation only
// In c ^ is a bitwise operator
そして、警告を避けるためにmath.h
を必ず含めてください( "incompatible implicit declaration of built in function 'pow'
")。
コンパイル時に-lm
を使用して数学ライブラリをリンクします。これは環境によって異なります。
たとえば、Windowsを使用している場合、使用する必要はありませんが、UNIXベースのシステムです。
#include <math.h>
printf ("%d", (int) pow (3, 4));
Cにはそのような使用法のための演算子はありませんが、関数のファミリーは次のとおりです。
double pow (double base , double exponent);
float powf (float base , float exponent);
long double powl (long double base, long double exponent);
後の2つは、C99以降の標準Cの一部にすぎないことに注意してください。
次のような警告が表示された場合:
「組み込み関数「pow」の互換性のない暗黙の宣言」
#include <math.h>
を忘れたためです。
#include <math.h>
からpow(base, exponent)
を使用できます
または独自に作成します:
int myPow(int x,int n)
{
int i; /* Variable used in loop counter */
int number = 1;
for (i = 0; i < n; ++i)
number *= x;
return(number);
}
別のアプローチとして、すべての標準ライブラリ関数が浮動小数点型で機能することに注意してください。次のような整数型の関数を実装できます。
unsigned power(unsigned base, unsigned degree)
{
unsigned result = 1;
unsigned term = base;
while (degree)
{
if (degree & 1)
result *= term;
term *= term;
degree = degree >> 1;
}
return result;
}
これは効果的に繰り返された倍数を行いますが、ビット表現を使用することでそれを少し削減します。低整数のべき乗の場合、これは非常に効果的です。
ちょうどpow(a,b)
を使用します。これはPythonの3**4
とまったく同じです
実際にはCでは、パワーオペレータはありません。結果を取得するには、手動でループを実行する必要があります。 exp関数でさえ、その方法でのみ動作します。ただし、その関数を使用する必要がある場合は、次のヘッダーを含めてください
#include <math.h>
その後、pow()を使用できます。