上代码
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "汉";
int sz1 = sizeof("汉");
int sz2 = strlen("汉");
int sz3 = sizeof(a);
int sz4 = strlen(a);
printf("sz1=%d\n", sz1);
printf("sz2=%d\n", sz2);
printf("sz3=%d\n", sz3);
printf("sz4=%d\n", sz4);
return 0;
}
运行结果
sz1=3
sz2=2
sz3=3
sz4=2
在增加一个汉字
#include<stdio.h>
#include<string.h>
int main()
{
char a[] = "汉字";
int sz1 = sizeof("汉字");
int sz2 = strlen("汉字);
int sz3 = sizeof(a);
int sz4 = strlen(a);
printf("sz1=%d\n", sz1);
printf("sz2=%d\n", sz2);
printf("sz3=%d\n", sz3);
printf("sz4=%d\n", sz4);
return 0;
}
运行结果
sz1=5
sz2=4
sz3=5
sz4=4
分析
strlen 相比 sizeof ,strlen 会把结尾的 \0 给算进去。
每增加一个汉字,字节长度会加 2
结论:汉字的长度为两个字节。