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。