Is int guaranteed to be 32 bits on each platform supported by Qt, or only qint32?
I remember reading somewhere that Qt guarantees the size of some data开发者_如何学JAVA types on supported platforms. Is it that int
will be at least 32 bits everywhere, and qint32
will be exactly 32 bits everywhere? Or something else?
C++ guarantees that int
will be at least 16 bits, and some Qt structures like QRect
and QPoint
use int
internally. I'm developing an application where 32 bits is needed with those types, and I don't want to have to duplicate their functionality so I can use a larger type.
The size of an integer type is up to the compiler. I don't think there's a guarantee that plain int
will be of a precise size. But you can make sure you know it's not what you want by adding this line to the beginning of your main()
:
if(sizeof(int) != 4) {
throw std::runtime_error("int is not 32-bit");
}
While, as far as I know, it's technically possible that int isn't 32bits, I've never seen a platform where it isn't. Imagine- char, 8bits, short, 16bits, int, .. 24bits? It simply doesn't fit the hierarchy for int to be non-32bits.
In addition, you can use UINT_MAX to confirm int's size on your given compiler.
精彩评论