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

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

Войти
Регистрация
Восстановить пароль
 
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
#1

Записать число в ячейку char - C++

02.04.2013, 22:07. Просмотров 923. Ответов 14
Метки нет (Все метки)

Здравствуйте.
Столкнулся со странной проблемой.

Нужно в ячейку str[0] записать некоторое число int.

Такой код работает:
C
1
2
char str[128];
str[0]=123;
А такой - не работает:
C
1
2
3
char str[128];
int I=123;
str[0]=I;
Почему? Как в ячейку char записать значение из переменной?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:24     Записать число в ячейку char #2
А какую ошибку пишет?
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:28     Записать число в ячейку char #3
C++
1
2
3
char str[128];
int I=123;
str[0]=char(I);
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 22:31  [ТС]     Записать число в ячейку char #4
C
1
2
3
char str[128];
int I=123;
str[0]=I;
Ошибок не выдает, просто записывает в ячейку значение -38.

Добавлено через 2 минуты
Цитата Сообщение от SERUYBKR Посмотреть сообщение
C++
1
2
3
char str[128];
int I=123;
str[0]=char(I);
Ошибка 3: error C2059: синтаксическая ошибка: тип
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:33     Записать число в ячейку char #5
jen941, а чего ты ожидаешь? int это же не char.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:36     Записать число в ячейку char #6
C++
1
str[0]=char(I);
Так тоже работает, преобразование из int в char - стандартное, с возможной потерей данных
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 22:36  [ТС]     Записать число в ячейку char #7
Смысл в том, что нужно положить в ячейку число.
Можно же записать его туда строкой:
C
1
str[0]=123;
А с переменной так не работает.
ViktorKozlov, возможно, у нас разные компиляторы, но это нужно сделать именно в VS2010...
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:41     Записать число в ячейку char #8
Странно.. У меня на VS 2008 все работает
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 22:43  [ТС]     Записать число в ячейку char #9
Понял ошибку, нужно было написать
C
1
str[0]=(char)(I);
Но все равно записывается -38
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:43     Записать число в ячейку char #10
C++
1
itoa()
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
02.04.2013, 22:45     Записать число в ячейку char #11
Цитата Сообщение от jen941 Посмотреть сообщение
Но все равно записывается -38
А как вы это проверяете?
palva
2592 / 1814 / 260
Регистрация: 08.06.2007
Сообщений: 6,958
Записей в блоге: 4
02.04.2013, 22:50     Записать число в ячейку char #12
char это по сути восьмибитный int. Его диапазон -128...127.
Можно объявить unsigned char, это восьмибитный unsigned int с диапазоном 0..255.
Если записывать туда большее число, то запишется младший бит, но компилятор, обычно, выдает предупреждение. По сути это переполнение разрядной сетки. Чтобы в char образовалось число -38 туда достаточно записать 218.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
#include <stdio.h>
void main()
{
    char c;
    c=218;
    printf("%d'n",c); // -38
}
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
02.04.2013, 22:53     Записать число в ячейку char #13
C++
1
2
3
4
5
6
char str[128];
int I=123;
 
itoa(I, str, 10);
 
std::cout << str[0] << str[1] << str[2] << std::endl;
Croessmah
02.04.2013, 22:55
  #14

Не по теме:

itoa() - не стандартная функция.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 23:03     Записать число в ячейку char
Еще ссылки по теме:
Как записать значение типа double в char? C++
C++ Как записать и прочитать int (4 byte) из char[]
записать по-битого один short int в два char C++
Как строки с шестнадцатеричным содержимым записать в биты char? C++
C++ Ввести число с клавиатуры, потом записать это число в текстовой файл

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

Или воспользуйтесь поиском по форуму:
jen941
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 69
02.04.2013, 23:03  [ТС]     Записать число в ячейку char #15
Разобрался, нужно использовать тип unsigned char.
Всем спасибо за помощь
Yandex
Объявления
02.04.2013, 23:03     Записать число в ячейку char
Ответ Создать тему
Опции темы

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