最近看到一个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....
有没有相关的文章和书可以参考的....?