第二章 数据类型、运算符与表达式(六)

二、C语言的数据类型

5、字符串变量

上一节讲过,字符型常量是由单引号包含起来的单个字符,比如 'a'

什么是字符串常量

是用一对双引号包含起来的一堆字符(可以是 1 个字符或者是多个字符),比如”你好,托小托”、”我爱小刷子"等。

例:

注意:

字符常量和字符串常量容易混淆 , 'a'是字符常量,"a”是字符串常量

字符'a'和字符串"a"的内存占用情况,一个小方块代表占用 1 字节,如下图:

​​​​​​​

重点:字符'a',在内存中占 1 字节,而 "a"在内存中占 2 字节

"a"的最后 一个字符为 '\0' ,这是一个转义字符,也就是说"a"是由 两个字符构成,但 是\0如果出现在 printf 中进行输出,不会显示出来,而是作为字符串结束标记来标记这个字符串内容结束。

例:

上面的代码行输出的结果是 你好,托小托,而后面的 我爱你 没有输出,原因就是系统在输出整个 printf 中的字符串时,一旦遇到 '\0’,系统认为整个字符串输出结束, '\0'后面出现的任何内容都不会被输出。

注意,在写一个字符串常量时,不要手工去增加 '\0' ,这是画蛇添足, '\0'是系统增加的。

所以"a"代表两个字符'a'和'\0',把它赋给一个只有1字节长度的字符型变量会报错。

调试程序时学会查看内存中的内容对深入掌握 C/C++语言编程好处巨大

注意:字符串的存放需要用到字符数组 ,后面会详细讲解,这里只做演示用。

查看内存的方法

试试看一下\0在内存中显示的十六进制数是多少?

扩展:

二进制转十六进制

有两种方法:

1、先二进制转十进制,再十进制转十六进制(详见:第二章 数据类型、运算符与表达式(三)

2、可以根据下表的对应关系

十六进制数

对应二进制数

十六进制数

对应二进制数

0

0000

8

1000

1

0001

9

1001

2

0010

A

1010

3

0000

B

1011

4

0100

C

1100

5

0101

D

1101

6

0110

E

1110

7

0111

F

1111

整数:二进制数转换成十六进制数只需要4位为一组,从右往左进行分组转换

例:1110011

小数:如果有小数部分,则从小数点开始,分别向左右两边补0,小数点左侧不足4位,在左侧补0;小数点右侧不足4位,在右侧补0;再按整的方法转换。

例:10100.01101

十六进制转二进制:

按表一一对应即可

例:0X2FD4

二进制转八进制

有两种方法:

1、先二进制转十进制,再十进制转八进制(详见:第二章 数据类型、运算符与表达式(三)

2、可以根据下表的对应关系

八进制数

对应二进制数

0

000

1

001

2

010

3

011

4

100

5

101

6

110

7

111

整数:二进制数转换成八进制数只需要3位为一组,从右往左进行分组转换

例:1110011

小数:如果有小数部分,则从小数点开始,分别向左右两边补0,小数点左侧不足3位,在左侧补0;小数点右侧不足3位,在右侧补0;再按整的方法转换。

例:10100.01101

十六进制转二进制:

按表一一对应即可

例:25.22

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值