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

short vs int - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.62
Riim
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 17
10.03.2010, 05:34     short vs int #1
Зачем в си два типа данных (short, int) с одинаковым диапазоном значений?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HIMen
 Аватар для HIMen
4105 / 1354 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
10.03.2010, 05:48     short vs int #2
short - 2 байта
int - 4
Соответственно, диапазон значения разный
Ivaneo
2 / 2 / 0
Регистрация: 01.08.2009
Сообщений: 16
10.03.2010, 06:34     short vs int #3
В С++ базовый тип данных short - 16 бит. Размер int зависит от платформы. На 32 битных процессорах это 32 бит, а на 64-битных может быть и 64, хотя не всегда.
Riim
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 17
10.03.2010, 06:36  [ТС]     short vs int #4
Наверное, у меня книга неправильная , посоветуйте какую-нибудь нормальную, желательно чтобы там без лишних разжевываний все было.
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
10.03.2010, 10:05     short vs int #5
книга у вас правильная, вот только посмотрите на год издания её и под какую ОС они пишут, и какой компилятор используют.

PS было время (DOS, Win95, Win98) и там int был 16-битовым...
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
10.03.2010, 11:10     short vs int #6
kuroiryuu, от ОСи это не очень зависит, а скорее от компилятора.
Я работал под ДОСом на BC 2.0 - там sizeof(int) = 2
Под W98 пришлось переходить на BC++ 5.02 - а там sizeof(int) = 4
При этом на BC 2.0 я продолжаю работать (W98) - int там остался = 2
Под XP картина аналогичная
Пришлось изрядно повозиться при переводе программ с BC 2.0 на 5.02 - я по недалекости
своей наплевал на рекомендации по мобильности и использовал не sizeof а прямо 2 байта
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
10.03.2010, 11:17     short vs int #7
компилятор борланда сам по себе опасен...
ибо BC унаследовал много функций от pascal, что меня в своё время немного смутило (вроде пишу на C, а некоторые функции pascal'я)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16843 / 5264 / 323
Регистрация: 30.03.2009
Сообщений: 14,159
Записей в блоге: 26
10.03.2010, 11:27     short vs int #8
В стандарте по поводу размеров типов сказано следущее:
1. Специфечируется размер только для типа char: sizeof(char) = 1 байту
2. Размер всех остальных типов не оговариваются, однако оговаривается соотношение между =х размерами: sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
3. В более поздних стандартах появился тип long long: sizeof(long) <= sizeof(long long)

Исторически сложилось, что на "обычных" архитектурах размеры типов следующие:
16-битные платформы: char = 1, short = 2, int = 2, long = 4
32-битные платформы: char = 1, short = 2, int = 4, long = 4, long long = 8
64-битные платформы: char = 1, short = 2, int = 4, long = 8, long long = 8
Под "обычными" архитектурами понимаю архитектуры с униварсельными процессорами, а не всякие типа сигнальных и прочих специализированных процессоров

Ivaneo, kuroiryuu, размер типов в стандарте определяется именно в БАЙТАХ. При этом в стандарте не оговаривается, сколько бит в байте. Но на тех же "обычных" архитектурах байт содержит 8 бит. Но на сигнальных процессорах бывают 16-битные, 24-битные и 32-битные байты. Слышал даже про 17-битные и 23-битные байты.

Для справки. Бит - единица измерения КОЛИЧЕСТВА информации. Байт - единица АДРЕСАЦИИ памяти. Таким образом байт по своей сути является минимально адресуемым участком памяти.

Исходя из этого когда провайдеры указывают скорость в мегаБИТАх в секунду или скорость оцифровки (или как правильно называется термин) файла mp3 выражена в килоБИТАХ в секунду, то формально есть есть правильные величины. Размер памяти в машине или размер диска исчисляется в ячейках памяти (но не в количестве бит), потому как в указании этих характеристик неявно присутсвует понятие размера ячейки памяти. Поэтому модули памяти и жётские диски оцениваются в магаБАЙТах (а не мегаБИТах). При этом исторически сложилось, что "бытовое" понятие байта состоит из 8 бит, а потому чтобы не путаться, все остальные байты (т.е. байты прочих размеров) обычно называют словами unit
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
10.03.2010, 12:45     short vs int #9
Хе.
А еще бывают мебибайты и мебибиты:
http://ru.wikipedia.org/wiki/Двоичные_приставки

Добавлено через 3 минуты
Жесткие диски оцениваются производителями в гигабайтах (10^9)
и на самих дисках размер указан именно в гигабайтах.

Тогда как ОС и утилиты оценивают размер жестких дисков в гибибайтах (2^30 == 1 073 741 824)

Хотя и там и там обычно пишется просто: 100Gb

Добавлено через 1 минуту
Что касается темы, то сейчас нет никакого смысла применять тип short int.
Только в очень специфических случаях.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2010, 13:09     short vs int
Еще ссылки по теме:

Для (short int) выполнить перестановку младшей и старшей тетрад его младшего байта C++
Преобразование 2-х char в один short int C++
записать по-битого один short int в два char C++

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

Или воспользуйтесь поиском по форуму:
Riim
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 17
10.03.2010, 13:09  [ТС]     short vs int #10
Цитата Сообщение от kuroiryuu Посмотреть сообщение
было время (DOS, Win95, Win98) и там int был 16-битовым...
Цитата Сообщение от Evg Посмотреть сообщение
16-битные платформы: char = 1, short = 2, int = 2, long = 4
32-битные платформы: char = 1, short = 2, int = 4, long = 4, long long = 8
64-битные платформы: char = 1, short = 2, int = 4, long = 8, long long = 8
Win98, книга хоть и более позднего года, но первое издание как раз в 98 году, теперь все понятно. Всем спасибо.
Yandex
Объявления
10.03.2010, 13:09     short vs int
Ответ Создать тему
Опции темы

Текущее время: 02:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru