C int to char不使用char格式打印输出

C int to char不使用char格式打印输出,c,C,我试图用字符格式说明符打印出整数的数字 这就是我现在拥有的 //counter = arbitrary int while (counter > 0) { char c = (char)(counter % 10); printf("%c", c); counter/=10; } 这只是打印为空,但如果我将格式说明符更改为int,但保留类型转换,它将打印正确的值。像这样的 cha

我试图用字符格式说明符打印出整数的数字

这就是我现在拥有的

    //counter = arbitrary int
    while (counter > 0) {
            char c = (char)(counter % 10);
            printf("%c", c);
            counter/=10;
        }
这只是打印为空,但如果我将格式说明符更改为int,但保留类型转换,它将打印正确的值。像这样的

   char c = (char)(counter % 10);
   printf("%d", c);

知道我使用字符格式说明符时为什么不打印吗?

%c
用于打印字符,而不是数字。如果要打印数字,应使用
%d
。它之所以适用于
char
,是因为当您将
char
作为参数传递给变量函数时,它被隐式提升为
int

如果
c
包含
%A'
,并且您使用
%c
对其进行格式化,则会得到字母“A”,但如果使用
%d
,则会得到其整数值,例如65

如果绝对必须使用
%c
,则可以在打印前将
'0'
的值添加到字符中,例如

printf("%c", c + '0');

%c
在此上下文中可以用作
printf(“%c”,c++'0”)
,其中
++'0'
将其转换为与
c

(计数器%10)
-->
(计数器%10++'0')
等效的整数,非常感谢!!此工作编辑正在打印,但字符代码
1
也称为Control-A,
2
称为Control-B等。7可能会产生噪音;8是退格;9是标签。它们都是控制字符,默认情况下没有可见的表示形式。@VincentLe您将数字(如0或4)与数字的表示形式(如“0”和“4”)混淆了。您希望
printf(“%c”,c)
打印出表示c的数值的数字。但这不是它的功能。是的,我知道
%c
是字符,但我必须使用字符specifier@VincentLe:您需要在帖子中提到这一点,这样人们就不会浪费时间提供不相关的答案。其中
+'0'
将为数字提供等效的ASCII字符值。。。请参阅:。执行字符集中的字符值,实际上,无论它是否为ASCII。