我知道标准说如果整数文字不适合 int,它会尝试 unsigned int,等等,根据标准中的第 2.14.2 节表 6。
我的问题是:判断适合与否的标准是什么?
为什么两者都要 std::is_signed<decltype(0xFFFFFFFF)>::value
std::is_signed<decltype(0x80000000)>::value
给出 false
.为什么它们不适合 int? 0x80000000
与 signed -1
具有相同的位表示signed -2147483648
.
最佳答案
您不需要查看“位表示”来检查数字是否合适。
假设sizeof(int) == 4
,int
可以表示从-231到231-1 包括在内。
0x80000000
为231,比最大值大1。
关于c++ - C++如何确定整数文字是否适合 int 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67961296/