C连载9-char类型详解

一、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););
 

9.1
可以看出,变量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大数据学习视频礼包
9.2

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值