Gibt es einen Grund, die bitweisen Operatoren &, | und ^ für "bool"-Werte in C++ nicht zu verwenden?
Manchmal stoße ich auf Situationen, in denen ich möchte, dass genau eine von zwei Bedingungen wahr ist (XOR), also füge ich einfach den Operator ^ in einen bedingten Ausdruck ein. Manchmal möchte ich auch, dass alle Teile einer Bedingung ausgewertet werden, unabhängig davon, ob das Ergebnis wahr ist oder nicht (anstelle eines Kurzschlusses), daher verwende ich & und |. Manchmal muss ich auch boolesche Werte akkumulieren, wobei &= und |= sehr nützlich sein können.
Ich habe ein paar hochgezogene Augenbrauen bekommen, als ich dies tat, aber der Code ist immer noch sinnvoll und sauberer als er es sonst wäre. Gibt es einen Grund, diese nicht für bools zu verwenden? Gibt es moderne Compiler, die in diesem Fall schlechte Ergebnisse liefern?
0 Stimmen
Wenn Sie seit dem Stellen dieser Frage ausreichend viel über C++ gelernt haben, sollten Sie zurückkommen und die aktuelle Antwort zurücknehmen und die Antwort von Patrick Johnmeyer akzeptieren, da sie den Unterschied zwischen Kurzschlüssen korrekt erklärt.
0 Stimmen
Allgemeine Bemerkung, weil die Leute sich fragen, ob dies eine gute Idee ist. Wenn man sich um die Verzweigungsabdeckung von Unit-Tests kümmert, dann ist eine Reduzierung der Verzweigungen wünschenswert. Bitweise Operatoren sind dafür nützlich.