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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по замене буквы на прописную 
V
    Опции темы
yngwie19
Дата 20.12.2008, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

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



Всем привет в книге нашел вот такой пример:
Код

char character;
cout<<"Введите английскую букву":
cin>>character;
if(character >= 'a' && character <='z')
      character = character - 0x20

Мне не понятно почему для замены буквы используется 0х20 как это работает?
PM MAIL   Вверх
andrew_121
Дата 20.12.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(yngwie19 @  20.12.2008,  10:10 Найти цитируемый пост)
почему для замены буквы используется 0х20

Потому что 0х20 - это код символа пробел.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Rififi
Дата 20.12.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



yngwie19
это не замена буквы, а преобразование в верхний регистр - так расположены большие и маленькие буквы латинского алфавита в ASCII-таблице.
PM MAIL   Вверх
mes
Дата 20.12.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(andrew_121 @  20.12.2008,  11:30 Найти цитируемый пост)
Потому что 0х20 - это код символа пробел. 

 smile  и как код пробела отражается на превращении прописной в загловную ?   smile 


Цитата(Rififi @  20.12.2008,  12:03 Найти цитируемый пост)
так расположены большие и маленькие буквы латинского алфавита в ASCII-таблице. 

 smile, а посмотреть всю ASCII таблицу можно так
Код

for (int i=0; i<256; ++i) std:: cout << "ASCII CODE "<<i<<" is "<<char(i)<<std::endl;

 0-127 набор общих символов, при том 0-31 служебные
128-255 раширенные и зависят от кодировки.

Это сообщение отредактировал(а) mes - 20.12.2008, 13:22


--------------------
PM MAIL WWW   Вверх
yngwie19
Дата 20.12.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 15.6.2008
Где: Новгород

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



НУ кто скажет все-таки почему нужно от символа отнимать 20 в шестадцатиричной сс? 
PM MAIL   Вверх
mes
Дата 20.12.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(yngwie19 @  20.12.2008,  15:45 Найти цитируемый пост)
НУ кто скажет все-таки почему нужно от символа отнимать 20 в шестадцатиричной сс?  

если бы Вы запустили выше приведенный  код, то увидили бы что в таблице прописные буквы английского алфавита отделены от соответствующих им заглавных 31 символом,
т.е разница кодов составляет 32 , что и есть 0х20. 



Это сообщение отредактировал(а) mes - 20.12.2008, 16:08


--------------------
PM MAIL WWW   Вверх
586
Дата 20.12.2008, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(yngwie19 @  20.12.2008,  15:45 Найти цитируемый пост)
НУ кто скажет все-таки почему нужно от символа отнимать 20 в шестадцатиричной сс?  

Потому что прописные и заглавные английские буквы так расположены в таблице кодировки относительно друг друга.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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