c++ - C++如何确定整数文字是否适合 int 类型?

标签 c++

我知道标准说如果整数文字不适合 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) == 4int可以表示从-231到231-1 包括在内。

0x80000000为231,比最大值大1。

关于c++ - C++如何确定整数文字是否适合 int 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67961296/

相关文章:

c++ - Dijkstra 算法不起作用(邻接矩阵)

c++ - 如何优化C++ Parquet ReadBatch方法

c++ - std::istringstream::imbue 是否拥有传递的对象

c++ - 如何使用 Rcpp 和内联设置 g++ 编译器标志?

c++ - 通过 const 拷贝

c++ - 将矩阵 `(*sp)[i]` 的行 `shared_ptr<vector<vector<T>> sp` 传递给接受 `shared_ptr<vector<T>>` 的函数

c++ - 在 eclipse c++ linux 中使用 opencv 静态库的大量 undefined reference 错误

c++ - 从套接字读取

c++ - OpenGL - 统一未正确传递?

c++ - 如何以适合 C++ 的方式删除数组中的最小和最大元素?