IF-statement met logische OR

Zo lees ik het bovenstaande. Als 1 gelijk is aan 2 of 4, druk dan waar af. Druk anders false af. Wanneer dit echter wordt uitgevoerd… wordt true afgedrukt. Het is duidelijk dat ik hier iets verkeerd begrijp. 1 is niet gelijk aan 2 of 4. Zou het daardoor niet onwaar zijn?


Antwoord 1, autoriteit 100%

Ja, ik heb dezelfde fout gemaakt.

Lees de zin nog eens:

Als 1 gelijk is aan 2 of 4, print dan waar.

De “2” en “4” verwijzen beide naar de “Als 1 gelijk is aan […].” Dat betekent dat de zin slechts een afkorting is van

Als 1 gelijk is aan 2 of 1 gelijk is aan4, print dan waar.

Dit leidt ons naar de if-clausule

if (1 == 2 || 1 == 4)

in plaats daarvan.


1 == 2 || 4is waar omdat (1 == 2) == falseORed met 4 == true, waar oplevert (onwaar OR waar = waar).


Antwoord 2, autoriteit 29%

Zo lees ik het bovenstaande. Als 1 gelijk is aan 2 of 4, druk dan waar af. Druk anders false af. Wanneer dit echter wordt uitgevoerd… wordt true afgedrukt. Het is duidelijk dat ik hier iets verkeerd begrijp. 1 is niet gelijk aan 2 of 4. Zou het daardoor niet onwaar zijn?

Nee, 1 is gelijk aan 2 of 4. 4is waar (omdat het niet nul is). Dus alles “of 4” is ook waar. Daarom is “1 is gelijk aan 2 of 4” waar.


Antwoord 3

Het evalueert naar waar, want als je controleert op de booleaanse waarde van alleen een geheel getal (zoals je doet met het getal 4), wordt het geëvalueerd naar waar. Zoals de mensen hierboven zeiden, moet je het opsplitsen.


Antwoord 4

Dit is niet hoe if-statements werken in C++. Als je wilt weten of iets gelijk is aan het een of het ander, dan is het dat wel

if (this == this_thing || this == another_thing)

Wat je hebt

if(1 == 2 || 4)

Wordt geëvalueerd om

if ((1 == 2) || 4)
if (false || true)
if (true)

Dus het if-statement zal altijd waar zijn.


Antwoord 5

In dit jouw zin

Als 1 gelijk is aan 2 of 4, print dan waar

je moet een paar woorden toevoegen om een correcte equivalente C++-zin te krijgen

Als 1 gelijk is aan 2 of is gelijk aan4, print dan waar

Zo ziet het er als volgt uit

if ( 1 == 2 or 1 == 4 )
{
    cout << "True";
}
else
{
    cout<<"False";
}

Wat betreft de originele staat

1 == 2 || 4

dan beschouwt de compiler het als volgt (vanwege de prioriteiten van de operators):

( 1 == 2 ) || 4

Volgens de C++ Stanbdard

De operatoren == en != geven beide waar of onwaar, d.w.z. een resultaat van
typ bool.

Dus als 1 == 2 gelijk is aan falsedan krijg je

false || 4

waar 4 gelijk is aan 0 is geconverteerd naar Boolean trueen als gevolg hiervan de volledige toestand evalueert naar true

Other episodes