前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小朋友学C语言(19):字符和整数的关系

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

作者头像
海天一树
发布2018-04-17 12:26:54
7750
发布2018-04-17 12:26:54
举报
文章被收录于专栏:海天一树

程序(一)

代码语言:javascript
复制
#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;
}

运行结果:

代码语言:javascript
复制
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编码简介

程序(二)

代码语言:javascript
复制
#include <stdio.h>
int main()
{
    for(char ch = '0'; ch <= '9'; ch++)
    {
        printf("字符%c <---> 数字%d\n", ch, ch);
    }
    return 0;
}

运行结果:

代码语言:javascript
复制
字符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)也是同样的道理,这从上面的代码就可以看出来。

程序(三)

代码语言:javascript
复制
#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;
}

运行结果:

代码语言:javascript
复制
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编码简介

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海天一树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序(一)
  • 程序(二)
  • 程序(三)
  • 作业:完整阅读 ASCII编码简介
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档