数字字符

来源:互联网 发布:网络玄幻小说合集下载 编辑:程序博客网 时间:2024/05/22 00:41

今天做题遇到一个问题,代码如下:

#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语言 字符型数字与数值型数字的转换

找到原因:/%c能够输出数字,因为该数字非数值数字,这个数字是ASCII码的值, 数字’0’ ~’9’用十进制表示就是48~57, (0x30~0x39)/

所以,输出结果就是几个数字字符,我们把它当成数字了
试了下用%d输出:

 printf("%d",res[i]); 

这里写图片描述

0 0
原创粉丝点击