最佳答案
同一个函数的两个版本,只有一个是内联的,而另一个不是,如何返回不同的值?下面是我今天写的一些代码,我不知道它是如何工作的。
#include <cmath>
#include <iostream>
bool is_cube(double r)
{
return floor(cbrt(r)) == cbrt(r);
}
bool inline is_cube_inline(double r)
{
return floor(cbrt(r)) == cbrt(r);
}
int main()
{
std::cout << (floor(cbrt(27.0)) == cbrt(27.0)) << std::endl;
std::cout << (is_cube(27.0)) << std::endl;
std::cout << (is_cube_inline(27.0)) << std::endl;
}
我希望所有的输出都等于 1,但是它实际上输出了这个(g + + 8.3.1,没有标志) :
1
0
1
而不是
1
1
1
编辑: clang + + 7.0.0输出如下:
0
0
0
和 g + +-Ofast 这个:
1
1
1