小朋友学C语言(19):字符和整数的关系

程序(一)

#include <stdio.h>

int main()
{
    char ch = 'A';
    printf("%c\n", ch);
    printf("%d\n", ch);
    printf("********************\n");

    int num = 66;
    printf("%c\n", num);
    printf("%d\n", num);
    printf("********************\n");

    ch = 'a';
    printf("%c\n", ch);
    printf("%d\n", ch);
    printf("********************\n");

    num = 100;
    printf("%c\n", num);
    printf("%d\n", num);
    printf("********************\n");

    ch = 'B' + 24; // 相当于ch = 'Z';
    printf("%c\n", ch);
    printf("%d\n", ch);
    printf("********************\n");

    num = 97 + 25; // 97'a'
    printf("%c\n", num);
    printf("%d\n", num);

    return 0;
}

运行结果:

A
65
********************
B
66
********************
a
97
********************
d
100
********************
Z
90
********************
z
122

分析:
从程序的运行结果可以看出,字符和整数是对应的。
字符’A’对应于65,’B’对应于66,’C’对应于67,……,’X’对应于88,’Y’对应于89,’Z’对应于90。
’a’对应于97,’b’对应于98,’c’对应于99,……,’x’对应于120,’y’对应于’121’,’z’对应于122。

为什么会有对应关系呢?
具体原因请参考:
ASCII编码简介


程序(二)

#include <stdio.h>

int main()
{
    for(char ch = '0'; ch <= '9'; ch++)
    {
        printf("字符%c <---> 数字%d\n", ch, ch);
    }

    return 0;
}

运行结果:

字符0 <---> 数字48
字符1 <---> 数字49
字符2 <---> 数字50
字符3 <---> 数字51
字符4 <---> 数字52
字符5 <---> 数字53
字符6 <---> 数字54
字符7 <---> 数字55
字符8 <---> 数字56
字符9 <---> 数字57

分析:
从程序运行结果可以看出,字符‘0’对应于48,‘1’对应于49,‘2’对应于50,‘3’对应于51,‘4’对应于52,‘5’对应于53,‘6’对应于54,‘7’对应于55,‘8’对应于56,‘9’对应于57。

那么字符串“10”对应于数字多少呢?58吗?
不是的。计算机把字符串“10”当成了两个字符:‘1’和‘0’,分别对应49和48。

具体也可查阅ASCII编码简介中的表格。

还有一个问题:当你用键盘输入“0”的时候,计算机怎么知道你输入的是字符还是数字呢?
很简单,看格式化符号,如果是scanf(“%c”, ch),计算机就当做是字符,如果是scanf(“%d”, ch),计算机就当成是数字。
printf(“%c”, ch)和printf(“%d”,ch)也是同样的道理,这从上面的代码就可以看出来。


程序(三)

#include <stdio.h>

int main()
{
    char ch = '\0';
    printf("%d\n", ch);
    ch = ' ';
    printf("%d\n", ch);
    ch = '\n';
    printf("%d\n", ch);

    return 0;
}

运行结果:

0
32
10

分析:
从运行可以看出:
(1)‘\0’与‘0’是不一样的,因为二者对应的ASCII编码不一样。
‘\0’对应着0,‘0’对应着48。
‘\0’代表空字符(NULL),通常用来做为字符串的结束符。
‘0’则是字符0或者数字48。

(2)程序里的‘\0’、‘\n’是转义字符。
什么叫转义呢?就是改变原来的意义。
比如‘0’表示字符‘0’,加上斜杆后‘\0’就变成了空字符。
再比如‘n’表示字符‘n’,加上斜杆后‘\n’就变成了换行符。

(3)所有的键盘操作(比如按Enter键进行换行)都对应着一个字符,当然也就对应了一个整数。都可以转化成机器可以认识的二进制。

注意:空格是用字符’ ‘来表示,不是用”来表示,两个单引号之间一定要加个空格,否则会报错。


作业:完整阅读 ASCII编码简介

更多内容请关注微信公众号
wchat_official.jpg

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值