Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/133: Рейтинг темы: голосов - 133, средняя оценка - 4.68
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
1

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

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

Извините если вопрос нубский, но я ни как не могу понять смысл long int и short int. Например с unsingned все ясно. Один байт в int зарезервирован под знак. И если мы сообщаем компилятору что тип данных unsigned int, то он знает, что число может быть только положительным и один байт для знака можно не оставлять. А как быть с модификаторами long и short? Заранее благодарен за ответы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2011, 22:10
Ответы с готовыми решениями:

в чем разница между int a и int *a?
люди подскажите начинающему... чем переменная отличается от указателя? допустим переменные int a...

в чем разница между int(a) и (int)a?
Собственно в этом и вопрос.

В чем разница между int main(){} и int main(void){}?
Только недавно начал изучать язык, и появилось несколько вопросов: 1) в чем разница между int...

Char, short, int, long: какой тип выбрать?
Всем привет Читая книги по C++ столкнулся с тем, что везде пишут примерно одно и тоже. Допустим...

15
Эксперт С++
5036 / 3096 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
28.08.2011, 22:13 2
stranger140569, всё элементарно - long может хранить числа больше, чем обычный int, short же - наоборот, меньше, чем int. Есть также long long - может хранить ещё бОльшие числа.

Добавлено через 46 секунд
Эти модификаторы просто заставляют компилятор выделять больше/меньше памяти под переменную (например, если int занимает 4 байта, то long будет занимать 6, а short - 2 байта).
0
462 / 462 / 23
Регистрация: 17.08.2011
Сообщений: 1,489
28.08.2011, 22:16 3
В том, что шорт ограничен порядком 32к, а лонг -- 4,2 млрд беззнаковый
0
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
28.08.2011, 22:19  [ТС] 4
А по диапазонам значений можно? И еще насчет знаков поподробнее, если не трудно.
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
28.08.2011, 22:26 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 платформа.
1
Эксперт С++
5036 / 3096 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
28.08.2011, 22:33 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 не различает))
1
Эксперт С++
2328 / 1701 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
28.08.2011, 22:37 7
silent_1991, не все так просто. Стандарт лишь оговаривает их относительный размер, т.е.:
C++
1
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
Получается что чисто теоретически все целые типы могут иметь размер равный 1 байту.
2
Эксперт С++
5036 / 3096 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
28.08.2011, 22:38 8
CyBOSSeR, да, я это знаю)) просто привёл пример, как в принципе может быть, чтобы разъяснить человеку, в чём смысл этих модификаторов.
0
2 / 0 / 1
Регистрация: 25.01.2011
Сообщений: 27
28.08.2011, 22:43  [ТС] 9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Мой компилятор, кстати, int и long не различает))
Выполнил твою программу. Мой тоже их не различает. Но все равно спасибо.
0
3072 / 2393 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
29.08.2011, 02:33 10
Неочевидные ответы на простые вопросы
0
niXman
29.08.2011, 04:15
  #11

Не по теме:

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

4
silent_1991
29.08.2011, 10:47
  #12

Не по теме:

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

0
Эксперт С++
2119 / 1558 / 231
Регистрация: 29.05.2011
Сообщений: 3,236
29.08.2011, 14:07 13
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Получается что чисто теоретически все целые типы могут иметь размер равный 1 байту.
Почему теоретически? Берём, например, компилятор от ADSP-21160, там
sizeof(char) == sizeof(short) == sizeof(int) == sizeof(long) == 1
Правда char при этом 32-битный
Впрочем, по приведённой ссылке про это упомянуто.
0
Эксперт С++
3210 / 1459 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
29.08.2011, 14:27 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/... gling.html
2
Эксперт С++
7171 / 3229 / 77
Регистрация: 17.06.2009
Сообщений: 14,166
30.08.2011, 08:26 15
Есть еще тип int64_t
0
Эксперт С++
5015 / 2594 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2011, 11:03 16
Цитата Сообщение от odip Посмотреть сообщение
Есть еще тип int64_t
мы тут как-то int128_t находили
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2011, 11:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Разница int, short, unsigned int, unsigned short
Есть например цикл который проходит по массиву в котором 100 элементов. В чем практическая выгода...

Размер для данных (int, char, long, double, short, unsigned, float)
Напишите программу, которая будет определять размер для данных (int, char, long, double, short,...

Программа, которая выводит на экран значение функции sizeof от типов short, int, long и тд
Кого не затруднит, создайте новый проект. Определите размерность базовых типов в вашей системе. Для...

Создать объединение, что содержит элементы типов char int short fload long string
всем доброго времени суток! мне нужно создать объединение, что содержит элементы типов char int...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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