?一、char类型
1.char类型存储的是整数而不是字符,例如:在ASCII中,65代表A;
2.标准ASCII范围为0-127;商用统一编码Unicode创建一个全球字符合集;
3.注意点:C语言把1字节定义为char类型占用的位数,因此在16位,32位,64位系统中都是可以用char类型的。有敌意i但值得注意就是在Java中,char类型是占两个字节的,而byte类型才会占用一个类型;
4.声明方式:
声明一个字符,我们需要使用单引号将其引用起来。不能使用双引号
我们可以这样char a = 65;但是并不推荐这样写,因为在跨系统的时候,可能会因为编码形式的不同,导致棘手的问题。
(1)注意点:char类型在C语言中将字符常量视为int类型,而不是char类型
char a = ‘A‘; char b = ‘DABC‘; printf("%c\n",a); printf("%c",b);
可以看出,变量b可以存储四个字符,但是当打印的时候我们只会打印出后面的八位,即C,不会打印前面,这种形式也用于“变位”操作。
5.非打印字符
有些字符比如:换行、空格等特殊字符无法打印出,我们有两个方式进行
(1)使用ASCII码,比如:蜂鸣字符就是7,可以这样写char a = 7;
(2)使用转义序列
转义序列 |
含义 |
\a |
警报(ANSI C) |
\b |
退格 |
\f |
换页 |
\n |
换行 |
\r |
回车 |
\t |
水平制表符 |
\v |
垂直制表符 |
\\ |
反斜杠 |
\‘ |
单引号 |
转义序列 |
含义 |
\" |
双引号 |
\? |
问号 |
\0oo |
八进制(oo必须是有效的八进制数字,即每个o可表示 |
\xhh |
十六进制(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数字) |
(3)C90中添加了警报声音,也就是\a,但是在某些系统中是不起作用的,C规定?:警报字符是不改变活跃位置的(这个活跃位置,我们可以理解为光标)
(4)八进制其实可以省略前面的0?,比如:‘\007‘,可以写为‘\07‘,甚至可以写为‘\7‘;
(5)整数常量的例子
类型 |
十六进制 |
八进制 |
十进制 |
char |
\0x41 |
\0101 |
N.A. |
int |
0x41 |
0101 |
65 |
unsigned int |
0x41u |
0101u |
65u |
long |
0x41L |
0101L |
65L |
unsigned long |
0x41UL |
0101UL |
65UL |
long long |
0x41LL |
0101LL |
65LL |
unsigned long long |
0x41ULL |
0101ULL |
65ULL |
(6)使用ASCII码时,注意数字和数字字符的区别,?例如:字符4对应的ASCII码是52,’4?‘表示字符4,不是数值4
(7) ASCII码和转义字符相比,推荐使用转义字符,因为这样可移植性强,且?易于识别。
(8) 如果要使用ASCII码,为何要写成\032,而不是032,首先’\032‘能够更加清晰的表达程序员?使用字符编码的意图,并且这样写是可以嵌套到字符串中去的,比如:printf("Hello!\007\n")?
三、源码:
D9_1_TypeOfchar.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D9_1_TypeOfchar.c
https://github.com/ruigege66/CPrimerPlus/blob/master/D7_toobig.c
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流,后台回复“礼包”获取Java大数据学习视频礼包、
原文:https://www.cnblogs.com/ruigege0000/p/13174734.html