Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
1

Ввод/вывод чисел посредством unsigned char

11.11.2016, 09:33. Просмотров 1291. Ответов 14

Здравствуйте.Столкнулся с проблемой. Как правильно вводить/выводить unsigned char?


C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
void main()
{
    unsigned char x, y;
    x = 12;
    cin >> y;
    printf("%u \n", x); //тут выводит правильно
    printf("%u", y); //а тут вывод =49
    system("pause");
}
Почему y равен не введенному числу,а 49? как вывести правильно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2016, 09:33
Ответы с готовыми решениями:

Вывод unsigned char
вот задание: Создать абстрактный базовый класс Pair с виртуальными...

Приведение типов unsigned char[2] to unsigned char [64]
Добрый день! Подскажите пожалуйста, как поступить. Есть простая функция main...

Char unsigned char signed char длинна Кааак
Здравствуйте. char l = {0,0}; l = 0xff; Почему, меня, компилятор...

Сделать преобразование unsigned char в char, а затем типу int
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для...

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае...

14
nmcf
6414 / 5674 / 2583
Регистрация: 14.04.2014
Сообщений: 24,016
11.11.2016, 09:36 2
%u - это для unsigned int.
Что именно ты хочешь получить? Чем простой char плох?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4803 / 2454 / 687
Регистрация: 18.10.2014
Сообщений: 4,232
11.11.2016, 09:50 3
Цитата Сообщение от Menshakovich Посмотреть сообщение
Почему y равен не введенному числу,а 49?
Потому что оператор >> для стандартного потока и аргументов типа char, signed char, unsigned char читает не "введенное число", а один символ.

Цитата Сообщение от Menshakovich Посмотреть сообщение
как вывести правильно?
Это вопрос не вывода, а ввода. Используйте для ввода чисел другой тип. Не [signed/unsigned] char.
0
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
11.11.2016, 19:06  [ТС] 4
Я бы с удовольствием другим типом воспользовался,но в задаче нужно использовать именно unsigned char
0
nmcf
6414 / 5674 / 2583
Регистрация: 14.04.2014
Сообщений: 24,016
11.11.2016, 19:31 5
В какой задаче? Введёшь int, а после можешь поместить в char.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4803 / 2454 / 687
Регистрация: 18.10.2014
Сообщений: 4,232
11.11.2016, 19:42 6
Цитата Сообщение от Menshakovich Посмотреть сообщение
но в задаче нужно использовать именно unsigned char
Используйте на здоровье, если нужно! Но вот только для чтения из cin придется использовать временную переменную другого типа. У cin нет средств числового чтения прямо в unsigned char.
0
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
12.11.2016, 22:43  [ТС] 7
Ввожу в unsigned int. Перемещаю в char s. И не знаю как теперь загнать значение char в unsigned char. C strcpy невозможно из-за unsigned,пробую с memcpy,но и с ним вылетает(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void main()
{
    unsigned char y;
    y = 0;
    unsigned int x;
    cin >> x;
    char s[10];
    _itoa_s(x, s, 10);
    cout << s << endl;
    memcpy((unsigned char*)y, s,strlen(s));
    cout << y << endl;
    system("pause");
}
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
12.11.2016, 22:49 8
Menshakovich, Не усложняйте.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    unsigned char x;
    unsigned short y;
    std::cin >> y;
    x = y;
    std::cout << x;
}
0
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
13.11.2016, 18:33  [ТС] 9
он выводит не число, а знак....
0
nmcf
6414 / 5674 / 2583
Регистрация: 14.04.2014
Сообщений: 24,016
13.11.2016, 18:36 10
C++
1
std::cout << static_cast<unsigned short>(x);
0
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
13.11.2016, 19:02  [ТС] 11
А это только в выводе изменяется? само значение перемещается в x?

Добавлено через 14 минут
просто надо изменить именно само х,чтобы в дальнейшем выполнять операции
0
nmcf
6414 / 5674 / 2583
Регистрация: 14.04.2014
Сообщений: 24,016
13.11.2016, 19:20 12
Как изменить? Ну изменяй, а вывод в конце поставишь.
0
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
13.11.2016, 19:29  [ТС] 13
Как бы х должен стать unsigned char с вводимым значением y,дабы я смог с этим unsigned char работать. Но без вывода-то смайлики появляются.
0
nmcf
6414 / 5674 / 2583
Регистрация: 14.04.2014
Сообщений: 24,016
13.11.2016, 19:34 14
Menshakovich, тебе TheCalligrapher уже объяснил, что ввод и вывод char как числа не поддерживается, поэтому надо преобразовывать в другой тип.
0
Menshakovich
1 / 1 / 2
Регистрация: 11.11.2016
Сообщений: 149
13.11.2016, 20:06  [ТС] 15
Все-все. Дошло.Операции-то выполняются.
Огромное спасибо!
0
13.11.2016, 20:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2016, 20:06

Неверная конверсия из char* в unsigned char*
Здравствуйте. Почему-то ловлю ошибку, гласящую о том, что не удалась конверсия...

Ввод и вывод в массив char
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;locale.h&gt; #include...

const char и unsigned char
Всем привет. Такое дело. Это даже проблемой не назовешь, но суть такая. Мне...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru