我记得在某个地方读到Qt保证支持的平台上某些数据类型的大小。是指int
在所有地方至少为32位,而qint32
在所有地方恰好为32位吗?还是其他什么?
C++保证int
至少为16位,一些Qt结构体如QRect
和QPoint
在内部使用int
。我正在开发一个需要这些类型为32位的应用程序,我不想复制它们的功能以便使用更大的类型。
int
将具有精确的大小。但是,您可以通过将以下行添加到您的 main()
开始位置来确保您知道它不是您想要的大小:if(sizeof(int) != 4) {
throw std::runtime_error("int is not 32-bit");
}
据我所知,虽然从技术上讲int不一定是32位,但我从未见过它不是32位的平台。想象一下- char,8位,short,16位,int,.. 24位?这根本不符合int非32位的层次结构。
此外,您可以使用UINT_MAX来确认给定编译器上int的大小。
sizeof
运算符获得的大小和最小位数(以便表示 UINT_MAX
的值)是两个不同的概念。请参阅 https://dev59.com/TXVC5IYBdhLWcg3whBaj。 - Piotr Dobrogost
QtGlobal
定义了几个 typedefs。例如,qint32 的文档说:“有符号整数的 typedef。这种类型在 Qt 支持的所有平台上保证为 32 位。”。因此,这意味着在所有支持的平台上,int
也必须保证为 32 位吗? - Jake Petroulessizeof
来检查int
的大小,你无法知道它有多少位。请参见 https://dev59.com/TXVC5IYBdhLWcg3whBaj。 - Piotr Dobrogost