Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 183, средняя оценка - 4.61
stranger140569
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
#1

В чем разница между long int и short int - C++

28.08.2011, 22:10. Просмотров 22769. Ответов 15
Метки нет (Все метки)

Извините если вопрос нубский, но я ни как не могу понять смысл long int и short int. Например с unsingned все ясно. Один байт в int зарезервирован под знак. И если мы сообщаем компилятору что тип данных unsigned int, то он знает, что число может быть только положительным и один байт для знака можно не оставлять. А как быть с модификаторами long и short? Заранее благодарен за ответы.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.08.2011, 22:13     В чем разница между long int и short int #2
stranger140569, всё элементарно - long может хранить числа больше, чем обычный int, short же - наоборот, меньше, чем int. Есть также long long - может хранить ещё бОльшие числа.

Добавлено через 46 секунд
Эти модификаторы просто заставляют компилятор выделять больше/меньше памяти под переменную (например, если int занимает 4 байта, то long будет занимать 6, а short - 2 байта).
Денис Н.
459 / 459 / 4
Регистрация: 17.08.2011
Сообщений: 1,489
28.08.2011, 22:16     В чем разница между long int и short int #3
В том, что шорт ограничен порядком 32к, а лонг -- 4,2 млрд беззнаковый
stranger140569
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
28.08.2011, 22:19  [ТС]     В чем разница между long int и short int #4
А по диапазонам значений можно? И еще насчет знаков поподробнее, если не трудно.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
28.08.2011, 22:26     В чем разница между long int и short int #5
Цитата Сообщение от stranger140569 Посмотреть сообщение
А по диапазонам значений можно?
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
 
int main() {
    std::cout << "short " << (unsigned short)(-1) << "\n"
    << "int   " << (unsigned int) (-1) << "\n"
    <<  "long  " << (unsigned long) (-1) << "\n";
    return 0;
}
short 65535
int 4294967295
long 18446744073709551615

PS: x64 платформа.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.08.2011, 22:33     В чем разница между long int и short int #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <limits>
#include <typeinfo>
 
template< typename T >
void print_limits()
{
    std::cout << typeid(T).name() 
              << ": " << std::numeric_limits< T >::min()
              << ".." << std::numeric_limits< T >::max()
              << std::endl;
}
 
int main()
{
    print_limits< short >();
    print_limits< int >();
    print_limits< long >();
 
    return 0;
}
Добавлено через 1 минуту
Мой компилятор, кстати, int и long не различает))
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.08.2011, 22:37     В чем разница между long int и short int #7
silent_1991, не все так просто. Стандарт лишь оговаривает их относительный размер, т.е.:
C++
1
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Получается что чисто теоретически все целые типы могут иметь размер равный 1 байту.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.08.2011, 22:38     В чем разница между long int и short int #8
CyBOSSeR, да, я это знаю)) просто привёл пример, как в принципе может быть, чтобы разъяснить человеку, в чём смысл этих модификаторов.
stranger140569
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
28.08.2011, 22:43  [ТС]     В чем разница между long int и short int #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Мой компилятор, кстати, int и long не различает))
Выполнил твою программу. Мой тоже их не различает. Но все равно спасибо.
kazak
3032 / 2353 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.08.2011, 02:33     В чем разница между long int и short int #10
Неочевидные ответы на простые вопросы
niXman
29.08.2011, 04:15
  #11

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
std::cout << typeid(T).name()
кстати, способ деманглирования(или как это склонить?) имен: http://liveworkspace.org/code/b2c919...1731ed6fa72544

silent_1991
29.08.2011, 10:47
  #12

Не по теме:

niXman, проверял на cl, там он имена корректно выводит... g++ почему-то только сокращения))
А так, ни о заголовочнике cxxabi, ни о пространстве имён abi никогда не слышал... Это специфическая gcc-шная штука? Где можно почитать?

grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
29.08.2011, 14:07     В чем разница между long int и short int #13
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Получается что чисто теоретически все целые типы могут иметь размер равный 1 байту.
Почему теоретически? Берём, например, компилятор от ADSP-21160, там
sizeof(char) == sizeof(short) == sizeof(int) == sizeof(long) == 1
Правда char при этом 32-битный
Впрочем, по приведённой ссылке про это упомянуто.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.08.2011, 14:27     В чем разница между long int и short int #14
Цитата Сообщение от grizlik78 Посмотреть сообщение
ADSP-21160, там
sizeof(char) == sizeof(short) == sizeof(int) == sizeof(long) == 1
жуть какая %)

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
g++ почему-то только сокращения
ну да. такой он)

Цитата Сообщение от silent_1991 Посмотреть сообщение
ни о заголовочнике cxxabi, ни о пространстве имён abi никогда не слышал
сам недавно в кодах некоторого опенсорс проекта такое увидел)

Цитата Сообщение от silent_1991 Посмотреть сообщение
Это специфическая gcc-шная штука? Где можно почитать?
не знаю. не знаю.
наверное гугл знает

Добавлено через 1 минуту
а вот: http://gcc.gnu.org/onlinedocs/libstd...emangling.html
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
30.08.2011, 08:26     В чем разница между long int и short int #15
Есть еще тип int64_t
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2011, 11:03     В чем разница между long int и short int
Еще ссылки по теме:
Создать объединение, что содержит элементы типов char int short fload long string C++
int const и const int в чем разница этих записей C++
C++ в чем разница между void f(int &n) и void f(int &&n)
C++ Напишите программу, которая будет определять размер для данных (int, char, long, double, short, unsigned, float) и выводить информацию
C++ VS2010 разница между "int _tmain()" и "int main()"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2011, 11:03     В чем разница между long int и short int #16
Цитата Сообщение от odip Посмотреть сообщение
Есть еще тип int64_t
мы тут как-то int128_t находили
Yandex
Объявления
30.08.2011, 11:03     В чем разница между long int и short int
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru