![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Kostia |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2003 Репутация: нет Всего: нет |
Подскажите, пожалуйста, почему char позволяет использовать знаковые модификаторы: signed и unsigned? Как к символам можно применять знаки?
|
|||
|
||||
| brb |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 7.1.2003 Репутация: нет Всего: нет |
char has size 8 bit
signed char uses 8th (highest) bit as a sign( 0 - positive, 1 - negative). So it has range from -128 to 127; unsigned char uses all 8 bits as data. So it range is from 0 to 255. The same rule works with int and long. Range is different but idea is the same. Это сообщение отредактировал(а) brb - 23.5.2003, 00:16 --------------------
Сказки - удивительная вещь! Самое удивительное, что в них верят только маленькие дети, которым их рассказывают мамы и мамы, которым их рассказывают подросшие дети. |
|||
|
||||
| vickr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.5.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Все верно. Проще говоря, char - это такое же числовой тип, как и int (только меньшего размера), значит, он тоже может использоваться как в знаковом так и беззнаковом вариантах. Физически-то переменная типа char не может хранить в памяти символ, она хранит последовательность из 8 бит, которая может интерпретироваться как число и как символ (с ASCII кодом равным этому числу).
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:) |
|||
|
||||
| Kostia |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.5.2003 Репутация: нет Всего: нет |
2Vickr
Теперь понятно, спасибо. |
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Кстати, в винде (по крайней мере в MSVC 6.0) русские буквы имеют отрицательные коды.
char долен быть signed. -------------------- С уважением, А. Фролов. |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: нет Всего: 16 |
Нет. Русские буквы имеют код больше 127. Если ты пишешь в unsigned, то будешь иметь код букв больше 127, а если возмешь знаковый, то код будет отрицательный, так как знак минус определяется последними битами... Это сообщение отредактировал(а) DarkDS - 23.5.2003, 16:40 |
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Я тоже так думал, пока не объявил unsigned char. Попробуй. -------------------- С уважением, А. Фролов. |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: нет Всего: 16 |
Пожалуйста проект для ВС 6.0 консольное приложение:
Выдает: 226 100 102 100 162 160 175 (где отрицательные?) Это сообщение отредактировал(а) DarkDS - 23.5.2003, 17:13 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |