Według 4,7 (Integral konwersje), pkt 4, „Jeśli typ docelowy jest bool
patrz 4.12.Jeśli typem źródłowym jest bool
, wartość false
jest konwertowana na zero, a wartość true
jest konwertowana na jeden. "W 4.12," Wartość rytmu arytmetycznego, wyliczenia, wskaźnika lub wskaźnika na typ pręta może zostać przekonwertowana na rwartość typu bool
. Wartość zerowa, zerowa wartość wskaźnika lub wartość wskaźnika elementu zerowego jest przekształcana na false
; Inne wartości przekształca się true
„.
W sytuacji, gdy bool
argumenty nie są dozwolone integralne argumenty, tym bool
zostanie przekształcona w integralny typu. Gdy wynik równy jest przechowywany w zmiennej bool
, zostanie . być przekształcone bool
Dlatego będzie można używać + i * jako logiczna lub ai, i można użyć | i & również nie można uciec z ich mieszania, jak (bool1 + BOOL2.) & bool3 przyniesie false
, jeśli wszystkie trzy zmienne to true
. ((1 + 1) & 1 to 2 & 1, czyli 0 lub fałsz.)
Pamiętaj, że | i || nie działają identycznie nawet tutaj. | oceni obie strony, a następnie oceni bitowe lub. || oceni pierwszy operand, wtedy tylko, jeśli był fałszywy, oceni drugi.
Nie będę omawiać tutaj kwestii stylistycznych, ale gdybym zrobił coś takiego, z pewnością skomentowałbym to, żeby ludzie wiedzieli, co robię i dlaczego.
niesamowite, dzięki. Dwa razy wznowiłbym głosowanie, gdybym mógł –
+1 za cytowanie standardu (i odpowiadając na pytanie), dodając jednocześnie komentarz na temat stylu – Gabe