假設我有||
運算符的左/右兩個表達式。我發現如果左表達式是真的,那麼正確的運算符將永遠不會被調用。例如,在我的下面的代碼中,當getRand
返回true時,我發現Foo
將永遠不會被調用。我在Mac OSX上的XCode上進行了測試,並且懷疑它是否是我們可以依賴的C++的可靠特性 - 如果剩下的部分是||是真的,右邊的部分永遠不會被調用,或者它只是特定平臺的特殊功能(例如帶有XCode的OSX)?發佈我的代碼如下,謝謝。被C++邏輯OR(||)運算符困惑
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;
}
在此先感謝, 林
'想知道它是否是我們可以信賴的C++的可靠特性嗎?是的。 – Matt
&&也有短路評估,如果第一個參數是假的 – sp2danny
短路評估是一個可靠的功能 - 大部分時間_。如果使用的類型有&&運算符重載,它將不起作用。像「bool」這樣的原始類型是安全的。 – kolrabi