Ganz präzise
-
Hallo!
Welche der folgenden Abfragen ist die treffendste:
typedef unsigned __int64 bitboard; bitboard a, b; if ((a & b) == bitboard(0)) if (!(a & b)) if ((a & b) == false)Das ist bei mir ein grundsätzliches Problem. Ich bin mir nicht sicher, was tatsächlich "korrekt" ist.

Danke schonmal!
-
Tomahawk schrieb:
Welche der folgenden Abfragen ist die treffendste:
Um welches Ziel zu erreichen?
-
Ich wüsste nicht, was gegen "if (!(a & b))" sprechen sollte, aber "if ((a & b) == false)" dürfte gleichwertig, nur halt länger sein.
-
if(a & b == 0)
-
Da (a & b) aber keinen boolschen Wert erzeugt, würde ich auf keinen Fall "((a & b) == false" schreiben (da dort dann eine Promotion stattfindet).
Auch "!(a & b)" würde ich nicht schreiben (ähnlich wie bei strcmp(s1, s2)), da als Resultat eine Zahl rauskommt.Mein Favorit wäre demnach auch:
if(a & b == 0)
-
Einhellig ohne Klammern also. Das überrascht mich.
-
Th69 schrieb:
Da (a & b) aber keinen boolschen Wert erzeugt, würde ich auf keinen Fall "((a & b) == false" schreiben (da dort dann eine Promotion stattfindet).
Auch "!(a & b)" würde ich nicht schreiben (ähnlich wie bei strcmp(s1, s2)), da als Resultat eine Zahl rauskommt.Mein Favorit wäre demnach auch:
if(a & b == 0)Das ist auch mein Favorit, da es sich hier nicht um eine true/false oder 1/0 Operation handelt, sondern um einen Bitfilter.
-
Th69 schrieb:
if(a & b == 0)==hat aber Vorrang vor&.
-
Ups, ja stimmt, also noch mal, aber richtig (das kommt davon, wenn man einfach nur C&P benutzt -):
if((a & b) == 0)
-
Tut mir leid das ich eine fehlerhafte Copy & Paste Vorlage bereitstellte.
