Angenommen, ich habe zwei Ausdrücke links/rechts von ||
Operator. Ich finde, wenn der linke Ausdruck wahr ist, wird der richtige Operator niemals aufgerufen werden. Zum Beispiel, in meinem unteren Code, wenn getRand
Wahr zurückgibt, fand ich Foo
wird nie aufgerufen werden. Ich habe XCode auf Mac OSX getestet und mich gefragt, ob es sich um ein zuverlässiges Feature von C++ handelt, auf das wir uns verlassen könnten - wenn der linke Teil von || ist wahr, wird der rechte Teil nie aufgerufen, oder ist es ein spezielles Feature nur für bestimmte Plattformen (z. B. OSX mit XCode)? Poste meinen Code unten, danke.verwirrt durch C++ logisches ODER (||) operator
bool Foo()
{
std::cout << "I am called!\n";
return false;
}
bool getRand()
{
int random_variable = std::rand();
std::cout << random_variable << '\n';
return random_variable % 2 == 1;
}
int main(int argc, const char * argv[]) {
if (getRand() || Foo())
{
std::cout<<"Hello World \n";
}
return 0;
}
Vielen Dank im Voraus, Lin
"Ich frage mich, ob es eine zuverlässige Funktion von C++ ist, auf die wir uns verlassen können." Ja, ist es. – Matt
&& haben auch eine Kurzschlussauswertung, wenn das erste Argument falsch ist – sp2danny
Kurzschlussauswertung ist ein zuverlässiges Merkmal _meistens der Zeit_. Es wird nicht funktionieren, wenn der verwendete Typ einen überladenen Operator && hat. Primitive Typen wie 'bool' sind sicher. – kolrabi