目录
1.9 字符和ASCII编码
字符在c语言中以单引号扩起来。例如:前面我们用到的‘q’
字符在内存中的二进制序列:ASCII码
参考:ASCII 码表 - cppreference.com
- 字A-Z的ASCII码值:65~90
- 字符a~z的ASCII码值:97~122
- 对应的大小写字符(a和A)的ASCII码值的差值是32
- 数字字符0~9的ASCII码值:48~57
- 换行\n的ASCII值是:10
- 在这些字符中ASCII码值0-31这32个字符是不可打印字符,无法打印在屏幕上
单个字符的打印可以使用%c来指定格式
int main()
{
printf("%c\n",'Q');
printf("%c\n", 81);//Q的ASCII码值
return 0;
}
1.10 字符串和/0
字符串在c语言中是使用双引号括起来的一串字符。例如:“hello world”
字符串的打印格式可以使用%s来指定,也可以直接打印
#include <stdio.h>
int main()
{
printf("%s\n", "hello C");
printf("hello C");
return 0;
}
在字符串的末尾隐藏放着一个\0字符,这个\0字符是字符串的结束标志。
#include <stdio.h>
int main()
{
char arr1[]="abc";//arr1中含有\0
char arr2[]={'a','b','c'};//arr2中无\0
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
#include <stdio.h>
#include <string.h>
//strlen函数-统计字符串中\0之前的字符长度
int main()
{
char arr1[] = "abc";//arr1中含有\0
char arr2[] = { 'a','b','c' };//arr2中无\0
printf("%zd\n", strlen(arr1));//3
printf("%zd\n", strlen(arr2));//?
return 0;
}
1.11 转义字符
- \?:在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了。
- \':用于表示字符常量'
- \":用于表示一个字符串内部的双引号"
- \\:用于表示一个反斜杠,防止它被解释为一个转义序列符。
- \a:警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
- \b:退格键,光标回退一个字符,但不删除字符。
- \f:换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v。
- \n:换行符。
- \r:回车符,光标移到同一行的开头。
- \t:制表符,光标移到下一个水平制表位,通常是下一个4/8的倍数。
- \v:垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列。
- \ddd::ddd表示1~3个八进制的数字。如:\130 表示字符X
- \xdd:dd表示2个十六进制数字。如:\x30 表示字符0
- \0:null字符,代表没有内容,\0就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0。