2014-01-17 3 views
0

Я схожу с ума, пытаясь понять это, но ничего не пытаюсь работать. Пожалуйста, помогите мне здесь.C++ Как поместить целое число в массив символов

char ch[5]; 
int in = 15; 
ch[2] = in; // It has to be on a specefic place in that array 
cout << ch[2]; // Prints '*' 

Я знаю, что я могу сделать что-то вроде ch[2] = in+48;, но это будет работать только с номерами, меньшими, чем 10.

+0

'int' больше, чем' char'. Вы пытаетесь усечь значение 'int' до размера' char' или разделите 'int' на несколько' char'? –

+0

Вы не можете. То, что это делает, - это * тип-cast * целое число с символом 'char', который в основном отбивает верхние разряды и оставляет только восемь младших битов, которые имеют то же значение, что и код ASCII для' '* ''. –

+1

Что вы ожидаете от 'cout' для печати? '15'? –

ответ

1

Когда cout получает char, он интерпретирует его как символ (в соответствии с набором исполнения символов) а не просто целое значение. Если вы хотите напечатать целое значение, вам нужно, чтобы бросить его в какой-то другой целочисленном типе:

cout << static_cast<int>(ch[2]); 

Обратите внимание, что вы почти наверняка не сможете хранить все значения в int в char. Если ваш char составляет 8 бит (что, вероятно, есть), то 255 - это максимальное значение, которое вы можете сохранить в нем.

+0

'+ ch [2]' будет делать. –

+0

@LightnessRacesinOrbit Интересно, что именно здесь произошло? –

+0

@LightnessRacesinOrbit Я предпочитаю актерский состав, потому что он выражает намерение. –

Смежные вопросы