| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > вопрос о char |
| Автор: Kostia 22.5.2003, 23:45 |
| Подскажите, пожалуйста, почему char позволяет использовать знаковые модификаторы: signed и unsigned? Как к символам можно применять знаки? |
| Автор: brb 23.5.2003, 00:14 |
| 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. |
| Автор: vickr 23.5.2003, 09:01 |
| Все верно. Проще говоря, char - это такое же числовой тип, как и int (только меньшего размера), значит, он тоже может использоваться как в знаковом так и беззнаковом вариантах. Физически-то переменная типа char не может хранить в памяти символ, она хранит последовательность из 8 бит, которая может интерпретироваться как число и как символ (с ASCII кодом равным этому числу). |
| Автор: Kostia 23.5.2003, 12:57 |
| 2Vickr Теперь понятно, спасибо. |
| Автор: Alex101 23.5.2003, 16:29 |
| Кстати, в винде (по крайней мере в MSVC 6.0) русские буквы имеют отрицательные коды. char долен быть signed. |
| Автор: DarkDS 23.5.2003, 16:39 | ||
Нет. Русские буквы имеют код больше 127. Если ты пишешь в unsigned, то будешь иметь код букв больше 127, а если возмешь знаковый, то код будет отрицательный, так как знак минус определяется последними битами... |
| Автор: Alex101 23.5.2003, 16:46 | ||
Я тоже так думал, пока не объявил unsigned char. Попробуй. |
| Автор: DarkDS 23.5.2003, 17:10 | ||
Пожалуйста проект для ВС 6.0 консольное приложение:
Выдает: 226 100 102 100 162 160 175 (где отрицательные?) |