一个小测试程序:
#include <iostream>
const float TEST_FLOAT = 1/60;
const float TEST_A = 1;
const float TEST_B = 60;
const float TEST_C = TEST_A / TEST_B;
int main()
{
std::cout << TEST_FLOAT << std::endl;
std::cout << TEST_C << std::endl;
std::cin.ignore();
return 0;
}
结果 :
0
0.0166667
在 Visual Studio 2008 和 2010 上测试。
- 我曾在其他编译器上工作过,如果我没记错的话,第一个结果就像第二个结果一样。现在我的记忆可能是错误的,但 TEST_FLOAT 的值不应该与 TEST_C 相同吗?如果不是,为什么?
- TEST_C 值是在编译时还是在运行时解析的?我总是假设前者,但现在我看到这些结果我有些怀疑......