我正在尝试使用字符格式说明符打印出整数的数字。
这就是我现在拥有的
//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'
的值,例如L
printf("%c", c + '0');
关于C int 到 char 不使用 char 格式打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415072/