C连载9-char类型详解

Posted ruigege0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
",a); 

   printf("%c",b);

 技术图片

 

可以看出,变量b可以存储四个字符,但是当打印的时候我们只会打印出后面的八位,即C,不会打印前面,这种形式也用于“变位”操作。

5.非打印字符

有些字符比如:换行、空格等特殊字符无法打印出,我们有两个方式进行

(1)使用ASCII码,比如:蜂鸣字符就是7,可以这样写char a = 7;

(2)使用转义序列

转义序列

含义

a

警报(ANSI C)



退格

f

换页

换行

回车

水平制表符

v

垂直制表符

\\

反斜杠

单引号

 

转义序列

含义

"

双引号

?

问号

oo

八进制(oo必须是有效的八进制数字,即每个o可表示

xhh

十六进制(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数字)

(3)C90中添加了警报声音,也就是a,但是在某些系统中是不起作用的,C规定?:警报字符是不改变活跃位置的(这个活跃位置,我们可以理解为光标)

(4)八进制其实可以省略前面的0?,比如:‘07‘,可以写为‘7‘,甚至可以写为‘7‘;

(5)整数常量的例子

类型

十六进制

八进制

十进制

char

x41

 101

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码,为何要写成32,而不是032,首先’32‘能够更加清晰的表达程序员?使用字符编码的意图,并且这样写是可以嵌套到字符串中去的,比如:printf("Hello!07 ")?

三、源码:

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大数据学习视频礼包、

技术图片

 

 

以上是关于C连载9-char类型详解的主要内容,如果未能解决你的问题,请参考以下文章

Java连载54-两种单例模式接口详解

C连载13-复数类型以及基本数据类型总结

C连载12-float类型上下溢以及打印格式说明

C连载18-转换说明,转换说明修饰符sizeof返回类型可移植

20160211.CCPP体系详解(0021天)

20160211.CCPP体系详解(0021天)