Frage #5

Warum funktioniert das Potenzieren mit '^' nicht, und wie mache ich es richtig?

Antwort:

Problem

Seht euch einmal folgendes Programm an:

#include <stdio.h>
int main()
{
    int result = 2 ^ 2;
    printf("Das Quadrat von 2 ist (nicht) %d.\n", result);
    return 0;
}

Wer jetzt denkt das Ergebnis dieser eigentlich so simplen Rechnung ist 4, der hat sich getäuscht. In C/C++ potenziert der '^'-Operator nämlich nicht sondern bewirkt eine Bitweise 'XOR'-Verknüpfung. Deshalb werden wir als Ergebnis auch 0 bekommen und nicht wie gewünscht 4.

Lösung

Doch natürlich gibt es einen Ausweg aus dieser Situation. Wir können es 'händisch' mit '2*2' machen ;) Nein, Spaß beiseite es gibt eine Standardbibliothek mit mathematischen Funktionen (math.h). Und in dieser Bibliothek gibt es eine Funktion die genau das tut was wir wollen. Diese Funktion heißt 'pow' und potenziert die erste ihr übergebene Zahl mit der zweiten. Wir können unser Programm jetzt ausbessern:

#include <stdio.h>
#include <math.h> // Mathematik Bibliothek einbinden.
int main()
{
    int result = pow(2,2);
    printf("Das Quadrat von 2 ist %d.\n", result);
    return 0;
}

Und siehe da, es funktioniert. Falls es einen Linkerfehler gibt könnte es sein, dass du noch mit '-lm' die Mathematikbibliothek linken musst.

Verbesserungsvorschläge

Hat dir diese Antwort geholfen? Wenn nicht oder wenn du Verbesserungs- bzw. Erweiterungsvorschläge hast, dann schreib das bitte einfach auf die Diskussionsseite.

Zurück zur FAQ-Übersicht