char类型怎么输入 c语言_C语言中的char

e9d9693fb7df56218f69fadfa4bb3b61.png

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

#include 

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

#include <stdio.h>
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语言,随后将会继续分享心得体会,欢迎多多指教。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值