今天做题遇到一个问题,代码如下:
#include<stdio.h>
void f(int x,int y)
{
char res[10]={0};
int i=0,rem;
do
{
rem = x%y;
x=x/y;
if(rem<10)
{
res[i]='0'+rem;
}else{
res[i]='A'+rem-10;
i++;
}while(x!=0);
i--;
for(;i>=0;i--)
{
printf("%c",res[i]);
}
printf("\n");
}
void main(void)
{
f(23,10);
f(45,8);
f(50,16);
}
23
55
32
不明白为什么%c输出是数字,res[]是字符数组,而且运算也是与字符进行的,结果是数字字符才对….
测试如下:
输出结果为:2
97
#include<stdio.h>
int main(){
char a='2';
printf("%c\n",a);
printf("%d\n",97);
return 0;
}
输出结果为:a
97
#include<stdio.h>
int main(){
printf("%c\n",'a');
printf("%d\n",97);
return 0;
}
或:
#include<stdio.h>
int main(){
printf("%c\n",97);
printf("%d\n",97);
return 0;
}
输出:?
#include<stdio.h>
int main(){
char a;
printf("%c\n",a);
printf("%d\n",97);
return 0;
}
找到原因:/%c能够输出数字,因为该数字非数值数字,这个数字是ASCII码的值, 数字’0’ ~’9’用十进制表示就是48~57, (0x30~0x39)/
所以,输出结果就是几个数字字符,我们把它当成数字了
试了下用%d输出:
printf("%d",res[i]);