opérateur mathématique de puissance ne fonctionne pas comme prévu

short sho1, sho2; printf("Enter two shorts.\n"); scanf("%hd %hd", &sho1, &sho2); printf("%hd^%hd is %hd.\n", sho1, sho2, sho1^sho2); 

Quand j’entre ‘2 2’, j’obtiens cette sortie:

2 ^ 2 est 0.

Comment venir? J’utilise le compilateur MinGW GCC dans Eclipse, au cas où cela serait important.

^ n’est pas l’opérateur mathématique de puissance en C, c’est l’opérateur au niveau du bit exclusif-OU . Vous voulez probablement la fonction pow , qui prend deux doubles.

Vous n’utilisez pas l’opérateur que vous pensez utiliser.

^ est l’ opérateur XOR au niveau du bit .

Vous recherchez la fonction pow .

Prototype: double pow (double b, double p);

Fichier d’en-tête: math.h (C) ou cmath (C ++)

Explication: Cette fonction élève b à la puissance p.

Wikipedia a une liste utile d’opérateurs valables en C et C ++.

Il n’y a pas d’opérateur “power” dans C – ^ est l’opérateur XOR (OU au niveau du bit)

L’opérateur ^ n’est pas l’opérateur élecsortingque; c’est l’opérateur XOR au niveau du bit. Pour l’opérateur élecsortingque, vous souhaitez utiliser la fonction pow déclarée dans math.h Ainsi:

 pow(2.0, 2.0) 

retournera 4.0 (soulignant intentionnellement que les parameters et la valeur retournée sont doubles).

Notez en outre que pow renvoie un double, vous devrez donc modifier le spécificateur de format en %g :

 printf("%hd^%hd is %g.\n", sho1, sho2, pow((double)sho1, (double)sho2)); 

Vous pouvez utiliser la fonction pow () en C.

 pow(base, exponent); 

C’est dans le fichier d’en-tête math.h.

En c ^ , est l’exclusif ou l’opérateur. Pour faire des pouvoirs, vous devez utiliser la fonction pow .

pow(2,2)