c语言中关于char的疑问

当我们使用char时用单引号圈入多个字符时,系统只读取最后一个字符是不是因为字符都是以8位ASCII码储存于内存,而char只读取最后的8位所以只有一个字符被存进字符型变... 当我们使用char时用单引号圈入多个字符时,系统只读取最后一个字符是不是因为字符都是以8位ASCII码储存于内存,而char只读取最后的8位所以只有一个字符被存进字符型变量中???????????????????????????????????
(这是不是与int可以以几位存储无关?)
展开
 我来答
百度网友8b58de0
2019-09-09 · TA获得超过945个赞
知道小有建树答主
回答量:1079
采纳率:83%
帮助的人:325万
展开全部

在解答题前,先了解下各个字母的ascii值,十六进制的,便于解答

字母A:0x41 B:0x42 C:0x43 D:0x44

--------

char a='A';

可以理解成:

char a=(char)0x41;

----------

char a='BA'

可以理解成:

char a=(char)0x4241;

强制转换后a=0x41

---------

int i='DCBA';  //注意是int类型

可以理解成:

int i=(int)0x44434241;

----------

从上面几个说明你应该可以看出点端倪。

char a='BA';这个语句它是个赋值过程,BA也不是在内存中的字符串,它是由编译器编译的代码实现直接把0x41这个值放到a变量。


总结下:

单引号里的字符不属于字符串,它属于在编译的时候处理的东西,它不会存在于运行的内存当中,在编译过程中转换成对应的ascii码值。


下面图片很好的说明了这个问题,注意红色框,不明白可以追问:

更多追问追答
追问
1,字母以ASCii码存储与内存里,int a=‘A’;配合%c也可以输出A(以此类推以int应该可以表示ASCII里面可以用数字表示的所有字符),那char类型还有什么用处?
2,为什么char a='ABCD'时强制转换后只有最后一个字母D的asciii码而不是第一个字母的ASCII码??
追答
回答1.char类型只占1字节,int类型占4字节,double类型占8字节,那为什么不用double取代int。当然double类型比int类型计算耗cpu,所以不可能取代,这是主要原因。
那么int类型和char类型计算耗cpu时钟基本一样,那为什么不能取代,1.所占空间不一样。
比如struct{
char c1;
char c2;
char c3;
char c4;
int i1;
}
这个结构占8字节。
把上面结构char类型改int类型,那么将占用20字节。如果是大数据量,浪费多少字节,所以尽量用合适的数据类型。
2。一字节是8bits,正好是char类型来表示。里面有很多细节问题,就不一一多说。
chinaboyzyq
2019-09-09 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3272万
展开全部

单引号内存放多个字符

网页链接

你说得基本正确,因为char变量长度一节,正好8位,只能装下一个字符。

单引号内多个字符时,直接从末尾截取一字节。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
逆风清醒
2019-09-18
知道答主
回答量:61
采纳率:55%
帮助的人:7.5万
展开全部

一个char类型占1个字节(8位)

C语言中,一个字符是8位ASCII码组成的

也就是说一个字符需要1个字节的内存空间

所以,1个char类型对应1个字符,要想读取多个字符,得用char类型的数组。


char 单个字母 = ‘a’;

char[] 多个字符 =  "abc";

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vnclight
2019-09-09 · TA获得超过952个赞
知道小有建树答主
回答量:1169
采纳率:67%
帮助的人:65.4万
展开全部
char的取值范围为-128~127,所以char ch = 255;其实为char ch = -1;
所以printf("%d , %d , %d\n" , ch , ch + 1 , ch + 2);输出-1,0,1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fastfs
2019-09-09 · TA获得超过1423个赞
知道大有可为答主
回答量:2659
采纳率:62%
帮助的人:805万
展开全部
char只能存储一个字节单元 多字节也只能存储一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式