我在VC++中有以下代码:
for (int i = (a - 1) * b; i < a * b && i < someObject->someFunction(); i++)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器优化了所有这些算术运算,并且它们不会在每个循环上执行,但我不确定它们是否可以告诉上面的函数每次都返回相同的值并且它不需要每次都要打电话.
将所有计算保存到变量中,或者仅依靠编译器优化来获得更易读的代码是一种更好的做法吗?
int start = (a - 1) * b;
int expra = a * b;
int exprb = someObject->someFunction();
for (int i = startl i < expra && i < exprb; i++)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)