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

问题描述 投票:3回答:2
#include <iostream>
#include <cstdint>

using namespace std;

static_assert(-1 == numeric_limits<uint64_t>::max()); // ok
static_assert(-1 == numeric_limits<uint32_t>::max()); // ok
static_assert(-1 == numeric_limits<uint16_t>::max()); // error

int main()
{
    cout << numeric_limits<uint16_t>::max() << endl;
    cout << uint16_t(-1) << endl;
}

输出:

65535
65535

为什么numeric_limits<uint16_t>::max()不等于-1?

更新:

根据cppref

同样,USHRT_MAX可能不是无符号类型:其类型可能是int。

c++ standards numeric unsigned-integer compile-time-constant
2个回答
4
投票

整数转换和促销


5
投票
© www.soinside.com 2019 - 2024. All rights reserved.