C语言中用单引号括起多个字符的问题 | 您所在的位置:网站首页 › c语言两个斜杠是几个字符 › C语言中用单引号括起多个字符的问题 |
‘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'));运行结果: 2、把c1、c2、c3的类型改为int,再运行,结果如下: 结论: 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 实验室设备网 版权所有 |