Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Причина использования модификаторов типов 
:(
    Опции темы
hoz
Дата 17.2.2014, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



 Хочется понять для чего используются некоторые идентификаторы.
 Cогласно гарантированных минимальных диапазонов, соответствующих С++-стандарту ANSI/ISO модификатор singed вообще беполезный, как я вижу. Ведь какой бы не был тип, при добавлении данного модификатора к типу не меняется диапазон. Например,
            char        -128 -127
signed char        -128 -127
            int          -32 768 -32 767
signed int          -32 768 -32 767
Тогда какой с него прок вообще?
PM MAIL   Вверх
Gluttton
Дата 17.2.2014, 20:35 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: нет
Всего: 54



Цитата(hoz @  17.2.2014,  20:04 Найти цитируемый пост)
Ведь какой бы не был тип

Для int'ов - да.
А вот с char'ами там не все так просто. Есть три типа: char, signed char, unsigned char, к какому из двух последних относится char - зависит от конкретной реализации.

Стандарт по этому поводу говорит следующее:
Цитата

3.9.1 Fundamental
...
 It is implementation-defined whether a char object can hold negative values. Characters can be explicitly declared unsigned or signed. Plain char, signed char, and unsigned char are three distinct types.
...

There are five signed integer types: “signed char”, “short int”, “int”, “long int” and “long long int”.
...


Это сообщение отредактировал(а) Gluttton - 17.2.2014, 21:54


--------------------
Слава Україні!
PM MAIL   Вверх
hoz
Дата 18.2.2014, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Цитата(Gluttton @  17.2.2014,  20:35 Найти цитируемый пост)
 It is implementation-defined whether a char object can hold negative values

Думал как это перевести, но как-то нескладно получается (whether вообще нормально перевести не выходит, т.к. обычно оно принимает значение "ли"):
"Это определённая реализация.. где объекты могут принимать отрицательные значения." Так?

 В общем, дальше всё понятно. Говорится что есть 3 разных char являются отдельными типами (как я понял, подтипами). Но какая между ними разница? Ничего не говорится же..й
PM MAIL   Вверх
vinter
Дата 18.2.2014, 19:40 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 8
Всего: 56



Цитата(hoz @  18.2.2014,  19:32 Найти цитируемый пост)
Думал как это перевести, но как-то нескладно получается

"Может ли char-объект хранить отрицательные величины - зависит от реализации"
Как правило, если видишь whether можешь заменять его на if, может так будет проще с пониманием.
Что это всё значит? Это значит, что есть два типа: signed char и unsigned char, а char является, в сущности, одним из них. Каким? Это зависит от реализации и стандартом не регламентировано.


--------------------
Мой блог
PM MAIL WWW   Вверх
akizelokro
Дата 22.2.2014, 03:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Эти кадры не писали переносимые программы. В один момент, лет 15 назад, я столкнулся с сей проблемой, когда переносил прогу с Linux на Intel на FreeBSD на Sun чтоли.
И вообще надо.
Я тебе щас навскидку нарисую варианты, где signed имеет значение

Добавлено через 7 минут и 49 секунд
У нкоторых процев бывают (бывали) разные приколы. Они с этим не сталкивались, но это было.
Это раз.
Потом,С++ для весёлых ребят, должен реализовать все возможости, И перевод unsigned в signed тоже с трюками



--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1007 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.