Russian Qt Forum
Ноябрь 23, 2024, 23:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: максимальное число для типа int  (Прочитано 24294 раз)
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 максимальное число одно и тоже?
Записан
BRE
Гость
« Ответ #1 : Сентябрь 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-битной платформы да
Записан
spectre71
Гость
« Ответ #2 : Сентябрь 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, ...

Записан
spectre71
Гость
« Ответ #3 : Сентябрь 11, 2009, 11:06 »

для 32-битной платформы да
на сколько я знаю для большинства для 64-битных тоже: sizeof(int) == sizeof(long).
Записан
BRE
Гость
« Ответ #4 : Сентябрь 11, 2009, 11:11 »

на сколько я знаю для большинства для 64-битных тоже: sizeof(int) == sizeof(long).
Я про 32bit указал в контексте самого числа 2147483647.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Сентябрь 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)   Улыбающийся
« Последнее редактирование: Сентябрь 11, 2009, 15:26 от Igors » Записан
spectre71
Гость
« Ответ #6 : Сентябрь 11, 2009, 15:02 »

int           // always 4
Ничего подобного int может быть и 8 байт на 64-битной платформе
qint4       // always 8
такого в природе нет
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Сентябрь 11, 2009, 15:27 »

Ничего подобного int может быть и 8 байт на 64-битной платформе
На какой?
Записан
Rcus
Гость
« Ответ #8 : Сентябрь 11, 2009, 15:43 »

ILP64 Улыбающийся
http://en.wikipedia.org/wiki/64-bit
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.