我的自学c吧 关注:266贴子:1,467
  • 0回复贴,共1

2.5、ASCII来自

只看楼主收藏回复

2.5、ASCII来自 yangwang | 2015年1月2日0 个评论
现在,我们再来了解一下ASCII。
前面我们提到过,字符在计算机中是以数字来保存的。(因为计算机只能保存数字),人们将字符进行编号,这样就产生了字符集。
字符集其实有很多,而我们接触的最多,也最简单最通用的,就是ASCII了。
ASCII的长度是1字节,也就是8位,理论上来说最多可以保存256过字符。因为第一位是符号位,所以实际能用来保存数据的只有7位。也就是128个字符。
ASCII可以分为两个部分,第一部分叫做控制字符,第二部分是显示字符。
字符不一定都是能显示出来的,比如你在打字中经常使用的回车键。它不能显示出来,但是却可以控制显示出来的符号,这也正是这些符号的作用。
控制字符一共有32个,如下图

控制字符(图片来源于http://www.asciima.com/
我们不用去背那些字符的ASCII是多少。有些符号一定让你感到很奇怪,比如“传输开始”,这和计算机好像搭不上边啊。
其实ASCII 在设计的时候就不仅仅是为计算机设计的,还有打印机。计算机控制打印机就是直接向打印机发送ASCII码的。
在控制字符之后,就是可以显示出来的字符了。

显示字符
其实最后一个字符也是不可显示的,这个字符也就是delete键输入的结果。
很明显,0-9,a-z,A-Z都是按照顺序排好的,这样可以方便计算。
既然已经认识了ASCII,下面我们就来看看,怎么让变量保存字符。
上面说道过,你不需要记住字符对应的ASCII(你也记不住),因为我们可以直接使用这些字符,他们就是数字。
c语言中在单引号中括起来的数据就是一个字符。比如’a’,他的值就是97。
注意,’0’是不等于0的,’0’的值是“0”这个字符所对应的ASCII码,也就是48.
对变量赋值也很简单,就像数字一样使用
char ch = ‘a';//ch的值是97,也就是a字符的ascii
ch = ch – 32;//ch的值变成了65,也就是大写A的ASCII
这样,如果再(以字符方式)输出ch,你会发现是A而不是a了
在你开始庆幸不需要背ASCII表之前,我们先来看一个问题。那就是如何表示回车?
这还不简单嘛,用”包括起来嘛!


这样写?这样就错了,编译器会将你输入的回车当作空白符号,从而将两个”分开来看!
怎么办!!!
当然有办法
这时候就需要一种叫做“转义字符”的东西。因为有些字符在编程中会引起歧义,或者是这种字符键盘根本打不出来,人们就给他起了个“别名”
转义字符以“\”开始,后面跟一个字母或数字,\表示后面的字符失去了它本来的意思

但是这中间也有特殊情况,比如\这个字符。因为’ ‘之间只能表示一个字符,所以写成”’并不会引起歧义,所以这种写法是正确的。但是在字符串中(使用””包括),由于字符数量不能确定,就不能这样写。
注意在表的最后两行,有一个\ddd 和 \xhh。这是ASCII码的两种特殊表示形式。如果想用八进制ASCII码表示字符,可以在八进制数前面加上 \ ,然后用单引号引起来。例如:
beep = ‘\007′;
打头的那些0可以省略,也就是说,写成 ‘\07′ 或者 ‘\7′ 都一样。无论有没有打头的0 ,7 都会被当成八进制数处理。
至于16进制,则需要用x开头。例如:
l = ‘\xa';
此外,尽管 ‘\n’和 ‘\xa’ ,’\a’ 和 ‘\007′ 是等价的,但是我们应该尽可能使用 ‘\n’ 和 ‘\a’,而不要用 ‘\xa’ 和 ‘\007′ 。这是因为前者易懂、便于记忆,而且移植性更高。
当我们在字符串中使用转移字符的时候,需要注意。如果反斜杠后面的字符不能构成转义字符。反斜杠将被忽略,如
“ab\cde\fg”
它和”abcde\fg”等价
最后我们来学习字符的输出,
我们可以使用putc来输出一个字符,使用puts来输出一个字符串
#include
int main(void)
{
char a = ‘a';
putc(a);
putc(‘\n’);
a = a – 32;
putc(a);
puts(“\nHello!\n”);
return 0;
}
请编译并运行此程序,体会本文中所学到的知识。
分类: C语言教程


1楼2015-01-07 18:52回复