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 || 4
is waar omdat (1 == 2) == false
ORed 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. 4
is 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 false
dan krijg je
false || 4
waar 4 gelijk is aan 0 is geconverteerd naar Boolean true
en als gevolg hiervan de volledige toestand evalueert naar true