Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/29: Рейтинг темы: голосов - 29, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 17

short vs int

10.03.2010, 05:34. Показов 5646. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зачем в си два типа данных (short, int) с одинаковым диапазоном значений?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2010, 05:34
Ответы с готовыми решениями:

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

short int и short
Какая разница, инициализирую я переменную как short int или же как short ? Вроде и тот, и тот тип данных компилятор понимает :)

Размер указателя short int
Доброе утро. Возник вопрос почему short int = 8 байт? Он же должен занимать 2 байта в 32-х разрядной среде. #include...

9
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
10.03.2010, 05:48
short - 2 байта
int - 4
Соответственно, диапазон значения разный
0
3 / 3 / 0
Регистрация: 01.08.2009
Сообщений: 16
10.03.2010, 06:34
В С++ базовый тип данных short - 16 бит. Размер int зависит от платформы. На 32 битных процессорах это 32 бит, а на 64-битных может быть и 64, хотя не всегда.
0
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 17
10.03.2010, 06:36  [ТС]
Наверное, у меня книга неправильная , посоветуйте какую-нибудь нормальную, желательно чтобы там без лишних разжевываний все было.
0
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
10.03.2010, 10:05
книга у вас правильная, вот только посмотрите на год издания её и под какую ОС они пишут, и какой компилятор используют.

PS было время (DOS, Win95, Win98) и там int был 16-битовым...
1
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
10.03.2010, 11:10
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 байта
0
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
10.03.2010, 11:17
компилятор борланда сам по себе опасен...
ибо BC унаследовал много функций от pascal, что меня в своё время немного смутило (вроде пишу на C, а некоторые функции pascal'я)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
10.03.2010, 11:27
В стандарте по поводу размеров типов сказано следущее:
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
2
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
10.03.2010, 12:45
Хе.
А еще бывают мебибайты и мебибиты:
http://ru.wikipedia.org/wiki/Двоичные_приставки

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

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

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

Добавлено через 1 минуту
Что касается темы, то сейчас нет никакого смысла применять тип short int.
Только в очень специфических случаях.
0
0 / 0 / 0
Регистрация: 24.05.2009
Сообщений: 17
10.03.2010, 13:09  [ТС]
Цитата Сообщение от 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 году, теперь все понятно. Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2010, 13:09
Помогаю со студенческими работами здесь

Преобразование 2-х char в один short int
Пробую преобразовать 2 char в один short int таким образом: char buf; short int skl; int kol=0; for(int...

Почему макс short int равен 65535?
Делаю sizeof() получаю 4 байта 1байт=8бит те 4байта=32 бита но бит это 0 или 1 таки образом есть последовательность из 0 и 1...

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

Двоичный дамп short и char выводится как int
Доброго дня! Пытаюсь выводить двоичный дамп переменных char, short и int вот таким образом: #include &lt;iostream&gt; using...

записать по-битого один short int в два char
Здрасьте, всем. Записать побитого два char в один short int это: char char1; char char2; short int s; s=char1&lt;&lt;8|char2; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru