Das hängt alles von der Abarbeitungsrichtung und der Rangordnung der Operatoren ab. Guck mal hier: http://manderc.manderby.com/operator...ator/index.php
Das hängt alles von der Abarbeitungsrichtung und der Rangordnung der Operatoren ab. Guck mal hier: http://manderc.manderby.com/operator...ator/index.php
Danke Dir erstmal für den Link:
Verstanden hab ich es nicht wirklich.
Die Abarbeitungsrichtung ist demnach von links nach rechts bei einem Bitweisen AND
== hat den Rang 10
& hat den Rang 4
aber was sagt mir das jetzt ?
wie dem auch sei:
Laut Assembler Code hat mein Compiler result = FALSE daraus gemacht.
Er hat die AND Funktion also garnicht erst ausgeführt.
wie kommt er darauf, er weis dorch garnicht was rauskommt.
es sei denn, er hat es wie folgt aufgelöst ?
if (a & (b==0))
wenn also b==0 ist, muss a zwangsläufig nach dem AND auch 0 sein und damit ist das Ergebnis des Vergleichs immer 0
und deshalb erzeugt er nur den Code für result = FALSE
Liege ich da ungefähr richtg ?
Siehe Operator Precedence. == hat eine höhere Wertung als & und wird somit als erster evaluiert. Generell, weiß man es nicht, oder will sich nicht darauf verlassen, immer Klammern setzen. Schadet nie und schützt vor überraschenden Änderungen in der Zukunft, oder komischen Compilern.
Kultuverein Metal Resurrection, für mehr Bands und Konzerte in Österreich (:
und "+" bindet seinerseits stärker als "==", deswegen das Ergebnis deiner zweiten Abfrage. Hätte ich jetzt auch nicht gewusst, insofern war's lehrreich.
Hallo
Obwohl man die Bindung oder Rangfolge der Operatoren bei Unsicherheit ja schnell mal nachschlagen kann setze ich trotzdem immer ein paar Klammern mehr, weil es die Lesbarkeit des Codes erhöht. Der Kompiler ignoriert überflüssige Klammern sowieso...
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Okay, Danke Euch, dann hab ich es jetzt doch verstanden. Hätte nie gedacht, daß eine Zuweisung VOR einer Operation stehen könnte.
Ich dachte immer, erstmal rechnen und dann zuweisen. Naja man lernt halt nie aus. Ich denke auch, es ist "einfacher" ein paar Klammern mehr zu setzen,
nicht das erste Mal, daß ich mir dadurch das Leben schwer mache. Dann habt noch ein Bugfreies Wochenende![]()
Lesezeichen