Entwickler-Ecke
Off Topic - C++: Reihenfolge von operatoren
Aya - Di 01.02.11 00:29
Titel: C++: Reihenfolge von operatoren
Hi,
ich habe hier diese zeile code in der generierung eines MD5 Hashes:
Der funktioniert wunderbar, allerdings habe ich beim compilieren immer ne Warning:
Quelltext
1:
| warning: suggest parentheses around arithmetic in operand of '|' |
Die würd ich gern wegbekommen und eben klammern setzen. Nur.. wie? :)
Also wie ist ohne klammern die ausführ-reihenfolge?
Klar könnte ich die warning einfach ignorieren oder abschalten.. aber na ja..
Danke,
Aya
BenBE - Di 01.02.11 00:43
Schauen wir doch einfach mal in's
RFC [
http://www.faqs.org/rfcs/rfc1321.html]:
Quelltext
1: 2: 3: 4:
| F(X,Y,Z) = XY v not(X) Z G(X,Y,Z) = XZ v Y not(Z) H(X,Y,Z) = X xor Y xor Z I(X,Y,Z) = Y xor (X v not(Z)) |
Zu finden unter 3.4. Auch den Absatz unter dem Block lesen. HTH.
Greenberet - Di 01.02.11 09:57
Der Compiler meldet sich weil es dadurch lesbarer wird.
Sicher ist den meisten Klar wie die Berechnung funktioniert. Wenn man allerdings längere Ausdrücke bzw mehrere hat und irgendwo ein kleiner Fehler ist, dann tut man sich mit Klammern um einiges leichter =)
Aya - Di 01.02.11 20:48
Danke :)
seh ich das dann richtig das wenn ich dashier klammern möchte:
Quelltext
1:
| 0x80000000 + (i - 32) << 23 |
es so richtig ist:
Quelltext
1:
| (0x80000000 + (i - 32)) << 23 |
Wenn ich die tabelle bei Wikipedia richtig deute kommt + vor << richtig?
Danke,
Aya~
BenBE - Di 01.02.11 22:10
Richtig.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!