数字字符

本文通过实例解析了C语言中%c与%d输出的区别,解释了为何%c可以输出数字字符而不是数值的原因,并给出了%c与%d输出的具体效果对比。

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

#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]); 

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值