crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Различия типов int и short
Алексей1153
  опции профиля:
сообщение 29.12.2010, 18:43
Сообщение #11


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

Группа: Участник
Сообщений: 2890
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


ну я как обычно с костылями ))

Если это нужно применить на практике и это критично, то можно просто поставить проверку (для компилятора или в рантайме) -

#if sizeof(int)!=4
...предупреждение
#endif


if(sizeof(int)!=4)
{
   ... предупреждение
   throw;
}


и данный метод надёжен и непобедим

Сообщение отредактировал Алексей1153 - 29.12.2010, 18:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
panter_dsd
  опции профиля:
сообщение 29.12.2010, 23:30
Сообщение #12


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

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

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




Репутация:   3  


Костыльный костыль. ИМХО, лучше сделать typedef int8 (16, 32, etc)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 30.12.2010, 22:20
Сообщение #13


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

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

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




Репутация:   2  


Цитата(Litkevich Yuriy @ 29.12.2010, 11:39) *
AD, это требование стандарта:
short - фиксированный размер
int - в зависимости от платформы/компилятора
long - фиксированный размер

какая страница? насколько я помню стандартом гарантируется только что sizeof(char) == 1.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.12.2010, 22:47
Сообщение #14


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

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

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




Репутация:   94  


Цитата(DEADHUNT @ 31.12.2010, 0:20) *
какая страница?
сейчас я не скажу, но у трёх разных авторов, в том числе и Страустопа был пример по поводу двух платформ.
Цитата(AD @ 29.12.2010, 17:37) *
Например, если байт будет не 8 бит, а меньше, то уже такое определение не подходит.
да, как раз в примере речь и шла о "слове" (не в терминах Интел/мелкософт) - т.е. ширина шины данных.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 31.12.2010, 17:39
Сообщение #15


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

Группа: Участник
Сообщений: 2890
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(panter_dsd @ 30.12.2010, 1:30) *
Костыльный костыль. ИМХО, лучше сделать typedef int8 (16, 32, etc)

можно. Когда такие типы есть и за ними строго закреплён стандарт. На что надеяться нельзя, впрочем )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 1.1.2011, 15:16
Сообщение #16


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

Группа: Модератор
Сообщений: 1594
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


во многих компиляторах определены типы int8 (16,32...). как правило, тип int равен ширине шины. но бывает (при стандарте x86-64 берётся тип основных регистров, используемых конкретной осью). однако, среди всего многообразия компиляторов я ещё не видела, чтобы short был бы не двухбайтовый. исключения - компиляторы для DSP процессоров, там просто все типы данных - long, ибо процессор так устроен, что не может работать с меньшей длиной, поэтому там типы - чистая формальность, там даже char длиной в два слова. вот там нужно самому следить, чтобы сравнения были корректны и там для этой цели реализованы специальные функции приведения для корректного отсечения мусора при сравнении данных, а длина всегда 4. но в остальных случаях компилятор будет проверять длину данных. сколько видела компилеров, для всех short - это 2 байта. ну а представление байтов зависит от проца.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.1.2020, 7:59