ASCI I 编码表主要是字符的编码,一共编码了128个字符,其中33个控制字符,95个可显示字符。

  • 33个控制字符包含ASCII值0 - 31(含水平制表符,垂直制表符,换页,换行)、127(删除),共33个不可显示字符。
  • 95个可显示字符包含ASCII值32 - 126共95个可显示字符。其中包含10个数字字符,52个字母,33个为标点符号和运算符号(含空格)。

33个控制字符多数都已是陈废的控制字符,其用途主要是用来操控已经处理过的文字。虽然在大多数情况下,ASCII码值为0 - 31之间的字符不可显示,但根据所使用的操作系统不同,在某些DOS模式下可显示诸如笑脸、扑克牌花色等符号。


实现显示128个ASCII 码字符的C语言程序如下所示:

#include <stdio.h>
int main(void)
{int i;for(i = 0; i <= 127; i++){printf("%5c", i); //打印一个ASCII字符if(i % 16 == 0) printf("\n"); //每打印16个字符换行}return 0;
}

输出如下图所示:

可以看出来, 前32个字符都没有显示出来。

  • ASCII码值为13(0x0D)的控制字符是CR(回车),因此第一行实际上只输出了码值为0 - 12的字符(共13个)。第二行输出的三个字符是ASCII码值为14 - 16的字符;
  • 第三行最后一个字符是ASCII码值为32(0x20)的字符,是Space(空格),因此屏幕上看不到字符;
  • ASCII码值33 - 126的字符都是可显示的英文字母、数字、标点符号和运算符
  • 最后一个字符是ASCII码值为127(0x7f)的字符,是DEL(删除),也属于控制字符

关于C语言中char类型变量的取值范围的讨论:

C语言中char类型变量的占1个字节的空间,取值范围为 -128 ~ 127。在编程时一定要注意各种变量取值范围,忽视边界情况可能会导致代码出现死循环或者其他异常。

举例说明,将上面代码中的int i换成char ch:

#include <stdio.h>
int main(void)
{char ch;for(ch = 0; ch <= 127; ch++){printf("%5c", ch); //打印一个ASCII字符if(ch % 16 == 0) printf("\n"); //每打印16个字符换行}return 0;
}

当ch达到最大值127(0x7f)后,再增1就变成了-128(0x80),而关系表达式 -128 <= 127 为真,因此for循环不会终止,将继续运行下去;再继续增1,ch值变为 -127(0x81),关系表达式 -127 <= 127 为真,for循环继续。。。以此类推,for循环将永远不会结束。

是什么原因导致这段看上去很正常的代码出现死循环呢?原因就是编程时没有关注char类型变量的取值范围为 -128 ~ 127,这使得关系表达式 ch <= 127 永远为真,循环当然无法终止啦。

详解ASCI I 编码及C语言如何显示ASCI I 码字符相关推荐

  1. Unicode编码详解(二):编码预备知识

    Unicode编码详解(二):编码预备知识 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C++语法详解>一书相关章节的增补,以增强读者对字符的 ...

  2. php carbon详解,详解PHP使用日期时间处理器Carbon人性化显示时间

    详解PHP使用日期时间处理器Carbon人性化显示时间 本文介绍了PHP使用日期时间处理器Carbon人性化显示时间,分享给大家,具体如下: 可以通过 Composer 很方便的来安装 Carbon ...

  3. Linux_arm_启动_c语言部分详解,[原创]Linux arm 启动 c语言部分详解第四讲

    Linux arm启动c语言部分详解第四讲(from setup_per_cpu_areas();) Written by leeming 上面的setup_arch花了我们大量的篇幅,现在我们要继续 ...

  4. c语言的指针详解ppt,最全的C语言指针详解.ppt

    最全的C语言指针详解.ppt 第6章 指针,6.1 指针定义与使用 6.2 指针与函数 6.3 指针与数组 6.4 指针与字符串 6.5 指针数组与多级指针 6.6 指针与动态内存分配 6.7 指针的 ...

  5. 详解one—hot编码(独热编码)

    学习过程中遇到的优质的博文,怕丢了所以转载一下 转载自:https://www.cnblogs.com/shuaishuaidefeizhu/p/11269257.html 一.什么是one-hot编 ...

  6. JPG文件编解码详解——详细介绍编码和解码JPG

    http://blog.csdn.net/zhengzhoudaxue2/article/details/7693258 JPEG文件编/解码详解 cat_ng 猫猫 JPEG(Joint Photo ...

  7. C语言字符串库函数详解模拟实现(strlen、strcpy、strcat、strcmp)+字符操作函数+字符转换函数

    字符串库函数详解 一.无字符串长度限制的字符串函数 1. strlen 计算字符串长度函数 2. strcpy 字符串拷贝函数 3. strcat 字符串追加函数 4. strcmp 字符串比较函数 ...

  8. Java版人脸检测详解下篇:编码

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 如果您看过<三分钟极速体验:Java版 ...

  9. java servlet dao_Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)

    [实例简介] 该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详 ...

最新文章

  1. java日志和SLF4J随想
  2. 【学术相关】研究生哪些行为可以在导师那超加分?你做到了吗?
  3. 虚拟局域网vlan实验报告_自动化已非原来的自动化:看虚拟局域网技术应用到罗克韦尔的DCS...
  4. springboot+mybatis实现动态切换数据源
  5. html5shiv主要解决IE6-8 无法识别HTML5的新标签,父节点不能包裹子元素,以及应用CSS样式...
  6. 算法的概念与伪代码的使用
  7. matlab与c 接口与混合编程,Matlab与C/C++混合编程接口及应用方法解析
  8. eclipse spring mysql_为Eclipse上的Maven project添加SpringMVC和Mybatis以实现数据库
  9. Linux ubuntu 切换阿里更新源
  10. Windows XP Home Edition安裝 IIS 的方法
  11. Console-算法[for]-素数
  12. html5 天地图,天地图API
  13. ts16949 软件开发流程图_新产品开发流程图:包括APQP,DFMEA,PFMEA,PPAP(FAI),SPC,MSA(GRR)等...
  14. android 蓝牙读取数据格式,解析Android蓝牙数据包
  15. 华为od德科面试数据算法真题解析-专栏必看-
  16. 网站服务器记录攻击日志ctf,通过网站日志分析sql注入攻击的痕迹
  17. STM32的ADC多通道采集的实现
  18. python增加一列数据_使用Python向DataFrame中指定位置添加一列或多列的方法
  19. android美拍sd卡,AI美拍,智慧四摄;小i也有大不同
  20. 微信小程序之头部选项卡和左侧选项卡

热门文章

  1. 读【活出全新的自己】领悟 - 怎么判断那是不是真爱?
  2. JavaScript面试精讲(七)——谈谈深拷贝和浅拷贝
  3. 让你飞速成长的18个故事
  4. JAVA打印出1到100的所有质数,并计算共有多少个质数。
  5. Android中socket通信简单实现
  6. PHP实现汉字笔画统计
  7. 微信小程序-form表单保存提交与重置
  8. 滴滴开源的深度与温度——滴滴开源委员会秘书长吴国斌专访
  9. 25种用WordPress博客在网上赚钱的方法
  10. 记一次勒索病毒中招 (赎金已交)