课后习题S1E22动手第一题,小甲鱼老师的中文字符占3个字节,而我的占俩字节
本帖最后由 fanzongsao 于 2017-8-6 15:39 编辑是不是因为我用的是windows?
代码如下:
#include <stdio.h>
int main()
{
char str[] = "中";
int length, i;
length = sizeof(str) / sizeof(str);
printf("length of str: %d\n", length);
for (i = 0; i < length; i++)
{
printf("str[%d] = %d\n", i,str);
}
return 0;
}
小甲鱼老师的运行结果是
我的运行结果少了一个字节,如下
length of str: 3
str = -42
str = -48
str = 0
本帖最后由 丶忘却的年少o 于 2017-8-6 11:15 编辑
嗯,是的,我在linux里是3,在window下就是2,就像甲鱼哥说的在不同系统里占用的是不一样的,从开课就有说int/float/double类型也是这样在不同操作系统会不一样。
不过你这个程序代码好像不太对,那个for循环里的printf
printf("str[%d] = %d\n", i, str);
应该改成str,不然变量没用上,而且数组没意义 和文本编码有关
GB2312:两个字节
Unicode:两个字节
UTF-8:可变,一般为3个字节
GB2312在Windows上用的多
UTF-8在其他系统上(Linux这些)比较常见
测字符串的长度是用strlen,sizeof是返回总共占用了多少空间
丶忘却的年少o 发表于 2017-8-6 11:13
嗯,是的,我在linux里是3,在window下就是2,就像甲鱼哥说的在不同系统里占用的是不一样的,从开课就有说i ...
谢谢{:10_303:}
页:
[1]