2015-12-27 2 views
0

Я хочу написать символ в консоли.Невозможно записать символ в консоли

Это мой код.

using System; 

namespace bla 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      int d = 5; 
      char e = (char)d; 
      Console.WriteLine("my Char: " + e); 
      Console.WriteLine("my Char: " + e.ToString()); // also doesn't work 
     } 
    } 
} 

Вместо этого я просто вижу «мой Char:» как результат, вместо ожидаемого «моего Char: 5».

+0

Что ты хочешь печатать именно? Ваш код печатает запрос. –

+0

См. Выше. – kame

+1

Если вы хотите напечатать '5', то почему вы отсылаете его на' char'? Удалите символ 'char e = (char) d;' line и print 'd', тогда оператор' + 'обработает его. Вы не должны писать строку кода, которую вы не понимаете. –

ответ

4

литье 5 на шар дает вам 5-е значение из этого ASCII table.

Это не показывает ничего в консоли, потому что это не печатный символ.

Если вы заметили цифры в таблице, начиная с 48 (например, число 0) до 57 (например, номер 9).

Итак, вы должны это сделать.

int d = 5; 
char e = (char)(d + 48); 
Console.WriteLine("my Char: " + e); 
Console.WriteLine("my Char: " + (char)(5 + '0')); // or 
5

Вы хотите, чтобы char e = '5'; напечатал «5» на консоли.

Если у вас есть

int d = 5; 
char e = (char)d; 

вы печатаете символ с значением 5, который является Enquiry character как указано в комментариях к вашему вопросу, не характера «5».

Символ «5» имеет ASCII value 53 (0x35 в шестнадцатеричном - в ASCII 0x30 равен «0», это 0x39 «9», а остальные цифры 0x3{d}, где {d} является цифру); вы также можете изменить свой код, чтобы напечатать «5» следующим образом:

char e = 0x35; 

Обратите внимание, что здесь не нужно указывать. но если вы хотите бросить из int в char, вы можете использовать

int d = 0x35; 
char e = (char)d; 

Вы можете проверить это самостоятельно, делая что-то вроде

char e = 0x35; 
char f = '5'; 
bool check = e == f; // true 

Если вы хотите, чтобы персонаж печатается на изменить, вы можете сделать что-то вроде

private void printNumberToConsole(int number) 
{ 
    if (number < 0 || number > 9) 
     throw new ArgumentException("'number' must be between 0 and 9"); 

    char e = '0' + (char)number; // '0' == 0x30 

    Console.WriteLine("my Char: " + e); 
} 
+0

Мое литье? – kame

+0

Кастинг преобразует значение int 5 в символ с кодовой точкой Юникода 5, что, вероятно, является управляющим символом, а не символом для цифры «5», которая имела бы кодовую точку 43. –

+1

@kame - нет ничего внутреннего * неправильного * о актерском составе, это просто не приведет к тому, что вы хотите. –

0

Вам не нужно конвертировать 5 в char, следующий код работает:

int d = 5; 
Console.WriteLine("my Char: " + d.ToString()); 
+0

Вы правы, что актер не нужен, но это не печатает «5». –

+0

Я хочу передать из int в char. – kame

+0

Консольный выход предназначен только для проверки того, что все идет хорошо. – kame

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