Гарантируется, что int будет 32 бита на каждой платформе, поддерживаемой Qt, или только qint32? - PullRequest
6 голосов
/ 21 июня 2010

Я помню, как читал где-то, что Qt гарантирует размер некоторых типов данных на поддерживаемых платформах.Неужели int будет по крайней мере 32 бит везде, а qint32 будет точно 32 бит везде?Или что-то еще?

C ++ гарантирует, что int будет по крайней мере 16 битов, а некоторые структуры Qt, такие как QRect и QPoint, используют int внутри.Я разрабатываю приложение, в котором требуется 32 бита с этими типами, и я не хочу дублировать их функциональность, чтобы я мог использовать больший тип.

Ответы [ 2 ]

6 голосов
/ 21 июня 2010

Размер целочисленного типа зависит от компилятора. Я не думаю, что есть гарантия, что обычный int будет точного размера. Но вы можете убедиться, что знаете, что это не то, что вам нужно, добавив эту строку в начало вашей main():

if(sizeof(int) != 4) {
  throw std::runtime_error("int is not 32-bit");
}
0 голосов
/ 21 июня 2010

Хотя, насколько я знаю, технически возможно, что int - это не 32 бита, я никогда не видел платформу, на которой это не так.Представьте себе - char, 8bit, short, 16bits, int, .. 24bits?Он просто не соответствует иерархии для int, который не является 32-битным.

Кроме того, вы можете использовать UINT_MAX для подтверждения размера int в данном компиляторе.

...