突然发现自己其实一直对ASICII码懵懵懂懂的,今天特意去百度了一下,算是弄清楚了一点吧!
规则:
简单的来说:putchar(数字) 打印 字符
再来看几个例子
/*putchar输出字符*
printf("\n");
putchar('h');//h就是一个字符,用单引号输出
putchar('e');
putchar('l');
putchar(104);//h就是一个字符,对应整数是104 ASCII码
putchar('\n');
putchar('\101');//\ddd代表三位八进制,整数对应A的字符
下面是转义字符
1.asc码重点还是转义字符的问题
putchar('\') //error
a.c:5:10: warning: missing terminating ' character [enabled by default]
putchar('\');
^
a.c:5:2: error: missing terminating ' character
putchar('\');
报错原因:找不到终止符号。
因为【 \‘】代表是 字符 【 ‘ 】 和 表示字符的单引号【 ‘ 】不是同一个东西,一个表示字符的单引号,一个是字符单引号(这里读起来有点绕,希望仔细理解)
所以编译器找不到字符的表示字符的终止符号【’】
正确确写法是
putchar('\\') //反斜杠
putchar('\''); // 单引号
- 八进制转义字符
它是由反斜杠’‘和随后的1~3个八进制数字构成的字符序列。例如,’\60’、’\101’、’\141’分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的八进制值分别为60、101和141。( 注意这里 0,A,a 的十进制分别为 48 65 97,所以对应的八进制为 60,101,141),
这里注意:使用转义八进制时需再转为十进制,再去asc表找对应的字符
字符集中的所有字符都可以用八进制转义字符表示。
如果你愿意,可以在八进制数字前面加上一个0来表示八进制转移字符。
- 十六进制转义字符
它是由反斜杠’‘和字母x(或X)及随后的1~2个十六进制数字构成的字符序列。例如,’\x30’、’\x41’、’\X61’分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的十六进制值分别为0x30、0x41和0x61。
可见,字符集中的所有字符都可以用十六进制转义字符表示。
----------------------------------------------------注意事项--------------------------------------------------
1)转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
2)\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
3)在C程序中,使用不可打印字符时,通常用转义字符表示。
4)转义字符’\0’表示空字符NULL,它的值是0。而字符’0’的ASCII码值是48。因此,空字符’\0’不是字符0。另外,空字符不等于空格字符,空格字符的ASCII码值为32而不是0。编程序时,读者应当区别清楚。
5) 如果反斜线之后的字符和它不构成转义字符,则’\’不起转义作用将被忽略。
例如:
printf(“a\Nbc\nDEF\n”);
输出:
aNbc
DEF
6)转义字符也可以出现在字符串中,但只作为一个字符看待。
例 求下面字符串的长度
“\026[12,m” 长度为7
“\0mn” 长度为0。(想想:为什么不是2) // \0 代表字符串终止符