1.想象条件if (obj.is_x() || obj.is_y() || obj.is_z())
如果 obj.is_x()
返回 true,是否会调用和评估 obj.is_y()
和 obj.is_z()
?
2.这是个坏主意吗(一般而言)?这段代码看起来不好吗?
bool isbn13_prefix_valid (const string& prefix)
{
unsigned num = stoi(prefix);
if (num == 978 || num == 979) return 1; //super common ones
else if ( num >= 0 && num <= 5 || num == 7 || num >= 600 && num <= 649
|| num >= 80 && num <= 94 || num >= 950 && num <= 989
|| num >= 9900 && num <= 9989 || num >= 99900 && num <= 99999)
return 1;
return 0;
}
最佳答案
不,不会,因为 short-circuiting .
是的,该代码看起来很糟糕。不是因为它不正确,而是因为您将一个非常长的条件塞入单个
if
语句中。尝试重构您的代码以使其更清晰。
关于c++ - 条件评估是否优化?这段代码不好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117152/