Интервал, как гарантируют, составит 32 бита на каждой платформе, поддерживаемой QT, или только qint32?

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

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

6
задан Piotr Dobrogost 4 January 2011 в 21:39
поделиться

2 ответа

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

if(sizeof(int) != 4) {
  throw std::runtime_error("int is not 32-bit");
}
6
ответ дан 17 December 2019 в 02:24
поделиться

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

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

0
ответ дан 17 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: