C语言中的char 您所在的位置:网站首页 c语言问号的作用 C语言中的char

C语言中的char

2023-04-14 12:37| 来源: 网络整理| 查看: 265

C语言中的char是用于声明单个字符的关键字。char关键字具有一些很奇怪的特点,但是想要了解这些奇怪的特点为什么会存在,我们就要先了解char关键字的原理。char关键字会在内存中找到一字节的空闲空间,并且在里面写入一个从0到255的整型(int)值。正是因为这个原因,我们在使用char的时候就会发现一些很奇怪的现象。大家请看这个例子:

#include void main(){ char a = 'a'; char b = 'b'; printf("%c, %c\n", a, b); printf("%d, %d\n", a, b); }

大家运行一下这个程序就会发现,第一个printf函数输出了a和b,但第二个printf函数则输出了97和98。这里大家可能就要奇怪了,我明明声明的是两个字符,为什么第二个语句却输出了两个数字?我是用了假的char吗?事实上,这就恰好证明了char实际上是在内存里存储整型。也正是因为这个原因,我们在C语言中无法直接声明字符串,而是需要先创建一个char类型的数组,创建好之后,在向里面写入字符变量。接下来,我们再来看看char类型的溢出。大家可以看看这个例子:

#include void main(){ char a = ' '; char a_plus_1 = a + 100; printf("%d, %d", a, a_plus_1); }

如果大家运行一下,就会发现a的输出为34,34+100想必小学生都能很轻松的算出来,但是结果却不是我们想的那样,而是-124。这是因为char类型只使用了一字节的空间,因此能存储的数字范围很小。那么,溢出又是怎么一回事呢?让我们来看看:

假设有一条二进制消息,占用一字节空间,内容如下:

1 0 1 0 1 0 1 0

现在从右边写入一个比特位,内容为0。内容变为:

0 1 0 1 0 1 0 0

我们可以用一种相当形象的方式来理解溢出,即在一个台子上,放着许多物品,这些物品就是数据。这时候,右边突然挤过来别的什么东西,这是新的数据。这个数据被放到台子上之后,所有的数据都左移了一格,而最靠边的数据则被挤掉了,这就是为什么我们会看到32变成-124这样离谱的答案。

本人正在跟随B站上的C语言教程学习C语言,随后将会继续分享心得体会,欢迎多多指教。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有