crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Различия типов int и short
AD
  опции профиля:
сообщение 29.12.2010, 9:10
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вопрос для общеобразовательной цели - в чем различие типов short и int? Поискал в интернете - ответы настолько противоречивые, что так и не пришел к одному выводу. Основным различием называют то, что short всегда 16-разрядный, а int зависит от платформы и компилятора, но даже это многими оспаривается. А есть ли точный ответ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 29.12.2010, 10:04
Сообщение #2


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


Это и есть точный. short всегда 16, а int нет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 29.12.2010, 10:09
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(panter_dsd @ 29.12.2010, 10:04) *
Это и есть точный. short всегда 16, а int нет.

Почитай, я не зря спросил.... Точного мнения нет. Точно известно лишь одно, с чем никто не спорит, что sizeof(short) <= sizeof(int)! Все. Остальное может оспариваться!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.12.2010, 10:28
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


AD,
Цитата(AD @ 29.12.2010, 10:09) *
Все. Остальное может оспариваться!

ну и смысл оспаривать?
все понимают что многое зависит от компилятора, к примеру.
очевидно что не все компиляторы соблюдают стандарт. как в стандарте написано мы все знаем что обсуждать и о чем спорить в чём разбираться не понятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 29.12.2010, 10:30
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


AD, а чего тут оспаривать? Проверь размеры. short 2 байта, инт на 32 бит системе 4 байта. Все просто. Инт зависит от разрядности системы, short всегда 2 байта. Поэтому если система 16 битная, то размеры равны, иначе - инт больше. Это чисто на практике можно проверить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.12.2010, 11:39
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


AD, это требование стандарта:
short - фиксированный размер
int - в зависимости от платформы/компилятора
long - фиксированный размер

например, для микроконтроллеров PICmicro и AVR
short - 16 бит
int - 16 бит
long - 32 бита
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Влад
  опции профиля:
сообщение 29.12.2010, 12:33
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 146
Регистрация: 20.3.2009
Из: Санкт-Петербург
Пользователь №: 627

Спасибо сказали: 46 раз(а)




Репутация:   8  


Юрий, тогда уж упомяни - какого именно стандарта?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 29.12.2010, 12:37
Сообщение #8


Жаждущий знаний
***

Группа: Участник
Сообщений: 254
Регистрация: 1.1.2009
Из: Санкт-Петербург
Пользователь №: 474

Спасибо сказали: 32 раз(а)




Репутация:   3  


Да, и желательно пруф.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 29.12.2010, 15:37
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(ufna @ 29.12.2010, 10:30) *
AD, а чего тут оспаривать? Проверь размеры. short 2 байта, инт на 32 бит системе 4 байта. Все просто. Инт зависит от разрядности системы, short всегда 2 байта. Поэтому если система 16 битная, то размеры равны, иначе - инт больше. Это чисто на практике можно проверить.

Я не спорю, что sizeof(short) меньше sizeof(int). Меня смущает формулировка:
Цитата
short всегда 16, а int нет.

Это не так, как я узнал. Например, если байт будет не 8 бит, а меньше, то уже такое определение не подходит.

Вот точноe onpeделенue из вики. Язык крайне простой, потому без перевода:
Цитата
In computer programming, a short integer is a data type that can represent a whole number which may take less storage, while having a smaller range, compared with a standard integer on the same machine.
A variable defined as a short integer in one programming language may be different in size to a similarly defined variable in another. In some languages this size is fixed across platforms, while in others it is machine dependent. In some languages this datatype does not exist at all.
In C, it is denoted by short. It is required to be at least 16 bits, and is often smaller than a standard integer, but this is not required[1][2]. A conforming program can assume that it can safely store values between −215 and 215-1, but it may not assume that the range isn't larger. In Java, a short is always a 16-bit integer. In the Windows API, the datatype SHORT is defined as a 16-bit signed integer on all machines[3].
[edit]Common sizes

© wiki

Сообщение отредактировал AD - 29.12.2010, 16:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ufna
  опции профиля:
сообщение 29.12.2010, 18:34
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 362
Регистрация: 24.5.2008
Из: Курган/СПб
Пользователь №: 182

Спасибо сказали: 29 раз(а)




Репутация:   5  


AD,

Типы данных привязаны к байтам, а не к битам, поэтому если битность у системы другая и байт к примеру 9 бит или 12 бит (С и С++ работают с 8 и выше битами по стандарту), то соответственно размер типов меняется, но "Type int is an integral type that is larger than or equal to the size of type short int, and shorter than or equal to the size of type long".

Таким образом, если отбросить вопросы битности и байтности, то инт - тупо больше или равно шорт. И разница как раз в больше или равно, не более чем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 11:33