Russian Qt Forum

Программирование => С/C++ => Тема начата: Karl-Philipp от Сентябрь 11, 2009, 10:59



Название: максимальное число для типа int
Отправлено: Karl-Philipp от Сентябрь 11, 2009, 10:59
Прочитал, что минимальный гарантируемый диапазон чисел для int от -32767 до 32767.
Решил проверить на WinXP 32bit, какое максимальное число можно разместить в типе int?

Код:
#include <iostream>
#include <limits>

int main() {
    std::cout << std::numeric_limits<int>::max() << std::endl;
}

результат:
2147483647
потом попробовал long, в результате получил такое же число
2147483647
выходит, что и в int и в long максимальное число одно и тоже?


Название: Re: максимальное число для типа int
Отправлено: BRE от Сентябрь 11, 2009, 11:00
Прочитал, что минимальный гарантируемый диапазон чисел для int от -32767 до 32767.
Решил проверить на WinXP 32bit, какое максимальное число можно разместить в типе int?

Код:
#include <iostream>
#include <limits>

int main() {
    std::cout << std::numeric_limits<int>::max() << std::endl;
}

результат:
2147483647
потом попробовал long, в результате получил такое же число
2147483647
выходит, что и в int и в long максимальное число одно и тоже?
для 32-битной платформы да


Название: Re: максимальное число для типа int
Отправлено: spectre71 от Сентябрь 11, 2009, 11:03
Прочитал, что минимальный гарантируемый диапазон чисел для int от -32767 до 32767.
Решил проверить на WinXP 32bit, какое максимальное число можно разместить в типе int?

Код:
#include <iostream>
#include <limits>

int main() {
    std::cout << std::numeric_limits<int>::max() << std::endl;
}

результат:
2147483647
потом попробовал long, в результате получил такое же число
2147483647
выходит, что и в int и в long максимальное число одно и тоже?

Не обязательно но как правило так, и одназначно sizeof(int) <= sizeof(long).
Смотри также INT_MAX, INT_MIN, LONG_MAX, LONG_MIN, ...



Название: Re: максимальное число для типа int
Отправлено: spectre71 от Сентябрь 11, 2009, 11:06
для 32-битной платформы да
на сколько я знаю для большинства для 64-битных тоже: sizeof(int) == sizeof(long).


Название: Re: максимальное число для типа int
Отправлено: BRE от Сентябрь 11, 2009, 11:11
на сколько я знаю для большинства для 64-битных тоже: sizeof(int) == sizeof(long).
Я про 32bit указал в контексте самого числа 2147483647.


Название: Re: максимальное число для типа int
Отправлено: Igors от Сентябрь 11, 2009, 13:57
для 32-битной платформы да
на сколько я знаю для большинства для 64-битных тоже: sizeof(int) == sizeof(long).
Нет, это правильно для Вындоуз но на Mac

sizeof(long) = 4; // 32-bits
sizeof(long) = 8; // 64-bits

#if __LP64__
 // detect 8-byte long
#endif

Для совместимости избегайте long (unsigned long). Используйте явные типы

int           // always 4
long long  // always 8
qint4       // always 8
 
Edit: qint64  (вместо qint4)   :)


Название: Re: максимальное число для типа int
Отправлено: spectre71 от Сентябрь 11, 2009, 15:02
int           // always 4
Ничего подобного int может быть и 8 байт на 64-битной платформе
qint4       // always 8
такого в природе нет


Название: Re: максимальное число для типа int
Отправлено: Igors от Сентябрь 11, 2009, 15:27
Ничего подобного int может быть и 8 байт на 64-битной платформе
На какой?


Название: Re: максимальное число для типа int
Отправлено: Rcus от Сентябрь 11, 2009, 15:43
ILP64 :)
http://en.wikipedia.org/wiki/64-bit