#include <iostream>
#include <cstdint>
// ok
static_assert(-1 == std::numeric_limits<std::uint64_t>::max());
// ok
static_assert(-1 == std::numeric_limits<std::uint32_t>::max());
// error
static_assert(-1 == std::numeric_limits<std::uint16_t>::max());
using namespace std;
int main()
{
cout << std::numeric_limits<std::uint16_t>::max() << endl;
cout << std::uint16_t(-1) << endl;
}
输出:
65535
65535
为什么std::numeric_limits<std::uint16_t>::max()
不等于-1?
-1
未转换为uint16_t
。