62 Stimmen

Warum funktioniert mein Netzbetreiber (^) nicht?

#include <stdio.h>

void main(void)
{
    int a;
    int result;
    int sum = 0;
    printf("Enter a number: ");
    scanf("%d", &a);
    for( int i = 1; i <= 4; i++ )
    {
        result = a ^ i;

        sum += result;
    }
    printf("%d\n", sum);
}

Warum ist ^ nicht als Stromversorger arbeiten?

91voto

Sergei Tachenov Punkte 23067

Nun, zunächst einmal, die ^ Operator in C/C++ ist das bitweise XOR. Er hat nichts mit Potenzen zu tun.

Nun zu Ihrem Problem mit der Verwendung der pow() Funktion, etwas googeln zeigt, dass es hilfreich ist, eines der Argumente auf double zu setzen:

result = (int) pow((double) a,i);

Beachten Sie, dass ich das Ergebnis auch in int wie alle pow() Überladungen geben double zurück, nicht int . Da ich keinen MS-Compiler zur Verfügung habe, konnte ich den obigen Code allerdings nicht überprüfen.

Seit C99, Es gibt auch float y long double Funktionen genannt powf y powl bzw. falls dies eine Hilfe ist.

66voto

peoro Punkte 24751

In C ^ ist das bitweise XOR:

0101 ^ 1100 = 1001 // in binary

Es gibt kein Bedienelement für Strom, Sie müssen die pow Funktion aus math.h (oder eine andere ähnliche Funktion):

result = pow( a, i );

3voto

Max Punkte 105

Pow() funktioniert nicht mit int Daher die Fehlermeldung "error C2668:'pow': ambiguous call to overloaded function".

http://www.cplusplus.com/reference/clibrary/cmath/pow/

Schreiben Sie Ihre eigene Potenzfunktion für int s:

int power(int base, int exp)
{
    int result = 1;
    while(exp) { result *= base; exp--; }
    return result;
}

3voto

Pankaj Prakash Punkte 2096

Zuallererst ^ es un Bitweiser XOR-Operator no Stromversorger.

Du kannst auch andere Dinge benutzen, um die Potenz einer beliebigen Zahl zu finden. Du kannst verwenden for-Schleife zur Ermittlung der Potenz einer beliebigen Zahl

Hier ist ein Programm zur Ermittlung von x^y, d.h. x y

double i, x, y, pow;

x = 2;
y = 5; 
pow = 1;
for(i=1; i<=y; i++)
{
    pow = pow * x;
}

printf("2^5 = %lf", pow);

Sie können auch einfach Folgendes verwenden pow()-Funktion zur Ermittlung der Potenz einer beliebigen Zahl

double power, x, y;
x = 2;
y = 5;
power = pow(x, y); /* include math.h header file */

printf("2^5 = %lf", power);

2voto

anup Punkte 529

Math.h einschließen und mit gcc test.c -lm kompilieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X