char 类型怎么输⼊c 语⾔_C 语⾔中的
char
C语⾔中的char是⽤于声明单个字符的关键字。char关键字具有⼀些很奇怪的特点,但是想要了解这些
奇怪的特点为什么会存在,我们就要先了解char关键字的原理。char关键字会在内存中到⼀字节的空闲空间,并且在⾥⾯写⼊⼀个从0到255的(int)值。正是因为这个原因,我们在使⽤char的时候就会发现⼀些很奇怪的现象。⼤家请看这个例⼦:
⼤家运⾏⼀下这个程序就会发现,第⼀个printf函数输出了a和b,但第⼆个printf函数则输出了97和98。这⾥⼤家可能就要奇怪了,我明明声明的是两个字符,为什么第⼆个语句却输出了两个数字?我是⽤了假的char吗?事实上,这就恰好证明了char实际上是在内存⾥存储整型。也正是因为这个原因,我们在C语⾔中⽆法直接声明字符串,⽽是需要先创建⼀个的数组,创建好之后,在向⾥⾯写⼊字符变量。接下来,我们再来看看char类型的溢出。⼤家可以看看这个例⼦:
如果⼤家运⾏⼀下,就会发现a的输出为34,34+100想必⼩学⽣都能很轻松的算出来,但是结果却不是我们想的那样,⽽是-124。这是因为char类型只使⽤了⼀字节的空间,因此能存储的数字范围很⼩。那么,溢出⼜是怎么⼀回事呢?让我们来看看:假设有⼀条⼆进制消息,占⽤⼀字节空间,内容如下:
现在从右边写⼊⼀个⽐特位,内容为0。内容变为:
我们可以⽤⼀种相当形象的⽅式来理解溢出,即在⼀个台⼦上,放着许多物品,这些物品就是数据。这时候,右边突然挤过来别的什么东西,这是新的数据。这个数据被放到台⼦上之后,所有的数据都c语言char的用法
左移了⼀格,⽽最靠边的数据则被挤掉了,这就是为什么我们会看到32变成-124这样离谱的答案。
本⼈正在跟随B站上的C语⾔教程学习C语⾔,随后将会继续分享⼼得体会,欢迎多多指教。#include
1
#include <stdio.h>2
void main(){3
char a = ' ';4
char a_plus_1 = a + 100;5 printf("%d, %d", a, a_plus_1);6}
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 0