以下代码:
#include <iostream>
#include <limits>
#include <cstdint>
int main()
{
std::cout << std::numeric_limits<std::uint64_t>::digits10 << "\n"
<< std::numeric_limits<std::uint64_t&>::digits10 << "\n";
}
Run Code Online (Sandbox Code Playgroud)
输出
19
0
我希望std::uint64_t&它具有相同的价值std::uint64_t:这种差异是否有原因?
该类型是一个引用,因此它不是模板应该使用的uint64&算术类型之一。numeric_limits
对于定义的算术类型之外的任何其他类型,使用默认定义,其中包含:
static const int digits10 = 0;
Run Code Online (Sandbox Code Playgroud)
参考: http: //www.cplusplus.com/reference/limits/numeric_limits/