Originally Posted By: Damocles
Jetzt ratet mal den Unterschied zwischen
if((checkA()==2) && (checkB()==3))
und
if((checkA()==2) & (checkB()==3))

Wenn checkA und checkB das tun, was der Name erahnen lässt, nämlich etwas überprüfen, gibt es keinen Unterschied. Erst wenn checkA und/oder checkB Nebeneffekte haben schnappt die Falle zu. Immerhin muss man hier aber überhaupt erstmal Boolesche Ausdrücke mit Nebeneffekten zu verwenden, was ich als ohnehin nicht besonders gelungen empfinde. Manchmal macht es in speziellen Fällen Sinn, in der Regel leidet die Code Lesbarkeit aber stärker darunter, als der Nutzen wiegt. Ich empfinde die Wahl der Operatoren hier auch als etwas unglücklich. Für das non-short-circuit AND hätte man besser &&& genommen und für das non-short-circuit OR besser |||, wenn man die Operatoren denn schon überhaupt in die Sprache aufnehmen will. Gott sei Dank spielen sie in der Praxis ja fast keine Rolle.


Always learn from history, to be sure you make the same mistakes again...