C++ Rechnet falsch
-
Hallo liebe Community,
ich habe ein für mich unerklärliches Problem. Wahrscheinlich hat es mit bestimmten Eigenschaften von Integern oder so zu tun.
int result; result = 0 * 2 ^ 1; std::cout << result << std::endl;
Bei dieser Rechnung kommt das Ergebnis 1 heraus. Obwohl doch 0 heraus kommen sollte.
Warum ist das so und wie kann man das umgehen, dass das richtige Ergebnis rauskommt?Danke für alle Antworten!
-
Wieso sollte da 0 rauskommen? Was glaubst du, was ^ macht?
Und nächste Frage, was ist mit der Auswertungsreihenfolge?
-
Ok, also ich dachte immer, dass man das ^ benutzt, um eine Potenz zu nutzen. Dank deinem Hinweis, dass das aber nicht so ist, hab ich jetzt die pow-Funktion der math-Bibliothek im Internet als Lösung gefunden.
Aber kurze Rückfrage: Was macht denn das ^ in C++?
Viele Grüße
-
selbst bei der math-Bibliothek mit pow kommt 1 heraus. Warum ist das so?
-
^
ist der XOR-Operator.Und wie hast du denn gerechnet?
result = 0 * std::pow(2, 1);
oder
result = std::pow(0 * 2, 1);
Bei beiden ist ja klar, daß dabei
0
herauskommt.
Wie kommst du denn auf1
?
-
Ich muss zugeben, ich bin gar nicht draufgekommen, dass du unter ^ einen Potenzoperator meinen könntest. Das erklärt natürlich, warum dich das verwirrt hat.
-
int result; result = pow(0 * 2, 1);
So habe ich es gemacht. Kommt aber trotzdem 1 raus in der Variable result.
-
@Coop4Free Woher weißt du das?
-
@Coop4Free sagte in C++ Rechnet falsch:
Kommt aber trotzdem 1 raus in der Variable result.
https://onlinegdb.com/BJ4NLta38
und nu?
-
std::cout << std::pow( 0 * 2, 1 ) << std::endl;
Also bei mir kommt 0 raus.... hast du vielleicht die Argumente ( 0 * 2 und 1 ) vertauscht?