C ++ logischer Operator

8

Gibt es eine logische & amp; Operator in C ++? z.B. ein Operator, der nur als & amp; & amp; außer dass es auch spätere Argumente auswertet, auch wenn einige vorhergehende bereits zu falsch ausgewertet wurden? Der Bediener & amp; ist der bitweise und Operator, den ich verstehe.

    
Cookie 01.08.2011, 13:44
quelle

4 Antworten

21

Der Bediener & amp; ist in der Tat der bitweise Operator. Ich nehme an, Sie haben etwas wie

%Vor%

und Sie möchten, dass sowohl f () als auch g () ausgeführt werden, unabhängig davon, ob einer von ihnen zu false ausgewertet wurde. Ich schlage vor, dass Sie stattdessen etwas anderes tun:

%Vor%

Dies bietet auch eine bessere Lesbarkeit und verwirrt andere Programmierer nicht, die versuchen, Ihren Code zu pflegen. Auf lange Sicht ist es das wert.

    
Luchian Grigore 01.08.2011, 13:48
quelle
4

Es gibt keinen solchen Operator "immer ausführen" in C ++.

Meine erste Neigung ist, dass Sie, anstatt nach einem neuen Operator zu suchen, neu bewerten sollten, was Ihre Methoden tun, um irgendwelche Nebenwirkungen zu eliminieren, die ihre Ausführung erfordern. Es kann auf diese Weise möglich sein, einfach && zu verwenden und glücklich zu sein.

Wenn Sie jedoch tatsächlich alle Operationen nacheinander ausführen und dann sehen wollen, ob alle erfolgreich waren, wäre wahrscheinlich Luchian Grigores Antwort die beste. Es ist klar abgegrenzt, dass es sequenzielle Schritte sind, die immer ausgeführt werden müssen. Es gibt eine weitere Option, die weniger klar sein kann oder nicht:

%Vor%     
Mark B 01.08.2011 14:11
quelle
1

Es gibt kein logisches & , nur ein bitweises & .

Wenn Sie vermeiden wollen, dass logische Anweisungen kurzgeschlossen werden, müssen Sie einen Proxy verwenden, der vom Compiler nicht optimiert wird, um es zu erreichen (z. B. eine variable Meta-Vorlage).

    
Necrolis 01.08.2011 13:47
quelle
0

Wenn Sie den Operator & amp; & amp; überladen, wird kein Kurzschluss auftreten.

%Vor%

ref: Punkt 19, Abschnitt 13.9 in der C ++ FAQ lite

Wie bereits erwähnt, ist dies eine sehr schlechte Idee und verwirrt die Leute. Sie können es jedoch sehr eingeschränkt tun, wenn Sie einen ganz besonderen Fall haben.

    
sje397 01.08.2011 13:48
quelle

Tags und Links