为什么std :: numeric_limits :: max()不等于-1?

问题描述 投票:0回答:1
#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?

c++ standards numeric unsigned-integer compile-time-constant
1个回答
3
投票
因为-1未转换为uint16_t
© www.soinside.com 2019 - 2024. All rights reserved.