最近看到一個code大致是這樣寫的
bool ret;
bool function(int n)
{
if(n >= 0)
return true;
return false;
}
int main()
{
cin >> n1;
ret = function(n1)
cin >> n2;
ret = ret && function(n2)
return 0;
}
發現說只要function(n1)回傳false, function(n2)連進去都不會進去
反之只要function(n2)回傳true, function(n2)才會被執行
只要把ret = ret && function(n2)寫成
ret = function(n2) && ret就不會有這個問題
第一個反應是覺得是編譯最佳化...
因為第一個ret如果是false那function(n2)在&&下就是冗員
但是也不太敢確定, 這部分都還給老師了XD....
有沒有相關的文章和書可以參考的....?