2016-04-27 4 views
-1

Мне никогда не приходилось использовать unsigned char раньше, но мне недавно стало любопытно их способность хранить целые числа. Благодаря небольшому чтению, которое я сделал, я обнаружил, что приведение из int в unsigned char выполняется неявно, но я также добавил явное добавление. В любом случае приведенный ниже код не работает и либо распечатывает эквивалент букв алфавита, либо небольшой пустой ящик.Преобразование int в unsigned char в C

printf("%s", "Number: "); 
int input; 
scanf("%d", &input); 
unsigned char num = input; 
printf("%c%s%d", num, " = ", input); 
return (EXIT_SUCCESS); 
+0

Он будет печатать эквивалентный алфавит до тех пор, пока вы его не переполните, в этом случае не печатает ничего, как 0. – Ouss4

+1

используйте '% hhu' вместо'% c'. (если вы используете MSVC, используйте '% u') – BLUEPIXY

ответ

1

Вы печатаете из числа как характера (%c) вместо целого (%hhu).

1

В printf%c означает печать символьного символа, кодом которого является соответствующий аргумент.

Чтобы напечатать числовое значение, используйте вместо этого %d.

0

Он печатает письмо, потому что вы установили printf() для печати значения num в качестве символа с "%c". Если вы используете "%d", например, вы можете распечатать его числовое значение.