C语言中用单引号括起多个字符的问题 您所在的位置:网站首页 c语言两个斜杠是几个字符 C语言中用单引号括起多个字符的问题

C语言中用单引号括起多个字符的问题

2023-12-28 20:55| 来源: 网络整理| 查看: 265

‘x’是字符常量,占1字节,"x"是字符串常量,相当于’x’+’\0’,占2字节,这都没问题,但怎么理解类似 ‘abcd’ 这种常量:即用单引号括起来的多个字符?以下是我的对这个问题的思考过程: 1、先看代码:

char c1, c2, c3; c1 = 'abc'; c2 = 'bcda'; c3 = 'cdab'; printf("c1=%d,c1=%c\nc2=%d,c2=%c\nc3=%d,c3=%c\n" ,c1,c1,c2,c2,c3,c3); printf("%d\n",sizeof('a')); printf("%d\n",sizeof('ab')); printf("%d\n",sizeof('abc')); printf("%d\n",sizeof('abcd'));

运行结果: 在这里插入图片描述 同时有3个警告,都是: warning C4305: “=”: 从“int”到“char”截断

2、把c1、c2、c3的类型改为int,再运行,结果如下: 在这里插入图片描述 3、当试图给c1赋值’abcde’时,编译器(vc2010)报错: error C2015: 常量中的字符太多 4、用计算器查看第2步中的c3的整数值,正好占4个字节,而且从高字节到低字节恰恰就是’c’‘d’‘a’'b’的ascii码,各占1个字节;c2也一样,c1最高字节为 0000 0000; 在这里插入图片描述

结论: 1、对于用 ’ ’ 括起来的字符常量,vc2010按int型对待,分配4个字节存储空间,所以最多只能存4个字符,故允许有’a’、‘ab’、‘abc’、‘abcd’的形式,但’abcde’就出错;且这4个字符左边字符存放在高字节中,右边字符存放在低字节中;当只有一个字符时,存放在最低字节,其余3个字节补0; 2、当给char型变量分别赋值’abc’、‘bcda’、'cdab’时,截取最低字节送给char型变量,即最右边的字符,故有c1=c,c2=a,c3=b(所以有第一步的3个警告)

以上就是我对C语言中字符常量的理解。不知其它编译器是不是也是这样处理,以后用到别的编译器再说。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

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