Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
#1

преобразвоание int в char. речь не про atoi - C++

10.11.2010, 21:19. Просмотров 2118. Ответов 23
Метки нет (Все метки)

помогите разобраться, как происходит преобразование из int в char. например:
C++
1
2
3
int i =1000;
char k=232;
cout<<(int)k;
каким образом на экран выводится -24. и почему на одном компутере выводится знак 'ш' а на другом 'и'??

Добавлено через 13 минут
аа, блин, пардон.
C++
1
2
3
int i =1000;
char k=i;
cout<<(int)k;
а что касается 'и' и 'ш', то значение (int)k = -24 везде. а знаки разные
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2010, 21:19     преобразвоание int в char. речь не про atoi
Посмотрите здесь:

Из CHAR в INT C++
из int в char* C++
char-int C++
Из char[] в int C++
int=>char C++
Int to char C++
C++ из char[] в int
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.11.2010, 00:58     преобразвоание int в char. речь не про atoi #21
RUSya82, Локаль подключить пробовали?
И явно привести к unsigned char кстати
248 кстати.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    std::locale().global(std::locale(""));
    unsigned char f='ш';
    std::cout<<(unsigned int)f<<'\n';
    std::cout<<f<<'\n';
    return 0;
}
Собственно и так можно.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    std::locale().global(std::locale(""));
    char f='ш';
    std::cout<<static_cast<int>(static_cast<unsigned char>(f))<<'\n';
    std::cout<<f<<'\n';
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
11.11.2010, 01:01  [ТС]     преобразвоание int в char. речь не про atoi #22
Цитата Сообщение от illuminati Посмотреть сообщение
если чесно, не особо могу себе представить где такое применяется, чтобы char юзать в виде символа, дак еще и в него присваивать int, значения которого заведомо больше 1го байта
решение как мне кажется :
проверять интовую переменную на выход из диапазона значений char
вычисление адресса в хеш-функциях
illuminati
20 / 20 / 4
Регистрация: 14.06.2010
Сообщений: 108
11.11.2010, 01:06     преобразвоание int в char. речь не про atoi #23
Цитата Сообщение от RUSya82 Посмотреть сообщение
Хорошо, когда мы пишем, char f = 'ш';,в f записывается -24? Почему? если код символа 232? Я запутался просто.
код символа считывается без знака т.е.1110 1001, при исп. cout << c;
десятичная цифра выводится с учетом знака, т.е. 1 - минус, и 110 1001 - тело перем.
в итоге :
110 1001 - это 105 в десятичной сс
-128 + 105 + 1(особенности доп.кода) = -24
т.е. cout сам решает как ему юзать данную переменную

вот за что я всегда любил Си, так это за наглядность printf и scanf

Добавлено через 1 минуту
KBAC, а заюзать что-то больше char нельзя ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 01:14     преобразвоание int в char. речь не про atoi
Еще ссылки по теме:

C++ Преобразовать int в char *
char* to int C++
Сравнение char с int C++
C++ Char в int
C++ Char to int

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
KBAC
1 / 1 / 0
Регистрация: 10.05.2010
Сообщений: 72
11.11.2010, 01:14  [ТС]     преобразвоание int в char. речь не про atoi #24
Цитата Сообщение от illuminati Посмотреть сообщение
KBAC, а заюзать что-то больше char нельзя ?
да собственно это просто вопрос экзаменационный , надо было разобраться как он так преобразует. вроде все правильно разобрались. а хеш функция это это я просто привел пример где используется.

Добавлено через 2 минуты
Цитата Сообщение от illuminati Посмотреть сообщение
т.е. cout сам решает как ему юзать данную переменную
так можно ведь явно указать тип unsigned и будет все нормально выводиться как надо
Yandex
Объявления
11.11.2010, 01:14     преобразвоание int в char. речь не про atoi
Ответ Создать тему
Опции темы

Текущее время: 09:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru