|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 大学里的小菜鸡 于 2020-8-22 20:14 编辑
#include <stdio.h>
int main()
{
char str[] = "中";
int length, i;
length = sizeof(str) / sizeof(str[0]);
printf("length of str: %d\n", length);
for (i = 0; i < length; i++)
{
printf("str[%d] = %d\n", i, str[i]);
}
return 0;
}
复制代码
不难发现,每个中文字符在我们的系统中是占用 4 个字节的存储空间,并且都是负数。以此规律,我们只要检测一个字符对应的整型值是否为负数,如果是(中文字符),则将指针往后移动两个字节。
请问不是占用四个字节吗,为什么是后移两个字节,为什么不是移动其它个数的字节,我电脑运行这代码显示的是3,那该移动多少字节
运行小甲鱼的代码我这显示的不符合啊
本帖最后由 sunrise085 于 2020-8-22 20:13 编辑
你理解的不对,一个汉字占三个字节,另外一个是字符串的结束字符'\0'
你可以多输入几个汉字,就知道一个汉字是三个字节了
- #include <stdio.h>
- int main()
- {
- char str[] = "中国";
- int length, i;
- length = sizeof(str) / sizeof(str[0]);
- printf("length of str: %d\n", length);
- for (i = 0; i < length; i++)
- {
- printf("str[%d] = %d\n", i, str[i]);
- }
- return 0;
- }
复制代码
运行结果
- length of str: 7
- str[0] = -28
- str[1] = -72
- str[2] = -83
- str[3] = -27
- str[4] = -101
- str[5] = -67
- str[6] = 0
复制代码
|
|