web-dev-qa-db-fra.com

Au pouvoir de C?

Donc, en python, tout ce que je dois faire est

print(3**4) 

Ce qui me donne 81

Comment puis-je faire cela en C? J'ai cherché un peu et dire la fonction exp(), mais je ne sais pas comment l'utiliser, merci d'avance

32
samir

Vous avez besoin de pow(); fonction de math.h entête.
syntaxe

#include <math.h>
double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);

Ici, x est la base et y est l'exposant. le résultat est x^y.

tilisation

pow(2,4);  

result is 2^4 = 16. //this is math notation only   
// In c ^ is a bitwise operator

Et assurez-vous d'inclure math.h _ pour éviter d’avertir ("incompatible implicit declaration of built in function 'pow' ").

Lier la bibliothèque mathématique en utilisant -lm pendant la compilation. Cela dépend de votre environnement.
Par exemple, si vous utilisez Windows, cela n’est pas obligatoire, mais il s’agit de systèmes UNIX.

61
Gangadhar
#include <math.h>


printf ("%d", (int) pow (3, 4));
10
verbose

Il n'y a pas d'opérateur pour un tel usage en C, mais une famille de fonctions:

double pow (double base , double exponent);
float powf (float base  , float exponent);
long double powl (long double base, long double exponent);

Notez que les deux derniers ne sont qu'une partie de la norme C depuis C99.

Si vous recevez un avertissement tel que:

"déclaration implicite incompatible de la fonction intégrée 'pow'"

C'est parce que tu as oublié #include <math.h>.

8
Yu Hao

vous pouvez utiliser pow(base, exponent) de #include <math.h>

ou créez le vôtre:

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);
}
8
Ryan Webb

Pour une autre approche, notez que toutes les fonctions de bibliothèque standard fonctionnent avec des types à virgule flottante. Vous pouvez implémenter une fonction de type entier comme ceci:

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;
}

Cela fait effectivement des multiples répétés, mais réduit un peu en utilisant la représentation de bits. Ceci est très efficace pour les puissances faibles.

5
Keith

utilisez simplement pow(a,b), qui est exactement 3**4 en python

4
tintin

En réalité, en C, vous n’avez pas d’opérateur électrique. Vous devrez exécuter manuellement une boucle pour obtenir le résultat. Même la fonction exp ne fonctionne que de cette manière. Mais si vous devez utiliser cette fonction, incluez l'en-tête suivant

#include <math.h>

alors vous pouvez utiliser pow ().

3
Bodhi