首页新闻找找看学习计划

C 帮我看看这段简单的代码,为什么中文的长度也是1呢?

0
[已解决问题] 解决于 2013-07-23 19:31
#include<stdio.h>
#include<string.h>

int main()
{
char a[]={'h',''};
printf("h的长度是%d,我的长度是%d\n",sizeof(a[0]),sizeof(a[1]));
system("pause");
}

下边是运行结果:

C
hexllo的主页 hexllo | 菜鸟二级 | 园豆:405
提问于:2013-07-21 19:53
< >
分享
最佳答案
0

一楼说的对,汉字需要两个字符来存储

你这样写就知道他的长度了:

char ch[] = "中";

int size = sizeof(ch) == 3

奖励园豆:5
zlt | 菜鸟二级 |园豆:237 | 2013-07-21 21:08
其他回答(3)
0

a[1]其实是'我'的前半部分。

地质灾害 | 园豆:262 (菜鸟二级) | 2013-07-21 20:54
0

就用的char类型,必须为1啊~

幻天芒 | 园豆:36522 (高人七级) | 2013-07-21 23:08

同意。

sizeof是操作符,编译的时候就已经确定值了。

试试strlen()

支持(0) 反对(0) 硬盘很大 | 园豆:16 (初学一级) | 2013-07-22 11:42
0

其实和编码格式有关系的,UTF-8是三个字节,GB2312是两个字节,所以:

char ch[] = "中";

UTF-8下:

sizeof(ch) = 4;

 

GB2312下:

sizeof(ch) = 3;

’/0‘要占一个字符。

Linux开发菜鸟 | 园豆:202 (菜鸟二级) | 2013-07-21 23:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册