为什么慕课网这几个字占了9个字节?不应该是6嘛?
一个字难道不是占2个?
每个字符占几个字节是由选用的 字符集 和 字符集编码 决定的,中文字符并不一定占用2个字节。
简单地说,为了表示文字的字符,人们给每一个字符都编了一个数字代码,这样字符代码的合集叫做“字符集”。最常见的字符集就是ASCII,拉丁字母和标点符号及控制字符都有自己的代码。我国发布有GB2312字符集,中文Windows中使用的就是这个。
但不同的国家为不同的语言发布这么多的字符集使用起来很麻烦。它们不一定兼容,同一个代码在不同的字符集中可能代表不同的字符,这也是过去上网时常碰到乱码的原因。为了解决这个问题,人们发明了unicode,目标给予将世界上所有语言的每一个字符一个不同的代码,这样就将全世界的字符都编到了一个字符集中,不会再有切换字符集的麻烦,也不会再有乱码。
前面说的字符集规定了每一个字符的代码,而如何将代码储存起来就成了另外一个问题。比如a在ASCII中的代码是97,那要怎么在计算机中保存这个数字97呢? 记录成浮点数97.0吗? 还是记录成整型97? 这种记录方式就叫字符集编码。
当然我们知道ASCII码就是简单地记录下整型值,每个字符占用1字节。
GB2312的编码方式是记录到2个字节中。
unicode有多种编码方式,最常用的是UTF-8,这是一种可变长度的编码,它将字符记录到1-4个不等的字节中。好处就是可以节省空间,如ASCII字符还是会记录为1个字节,而中文字符一般记录到3个字节中。
现在在网页中使用UTF-8几乎已经成为国际标准了。而在编程方面,编译器会决定采用哪种字符集和字符集编码来保存字符。 看来本站的编译器将汉字记录为3个字节了。
为什么我用软件试了一下程序 输出是6啊
一个字占了2.5个字节其实,但是内存分配是一个字节4个位,但是一般都是占4个位,相当于你1一个字占了12个位,
所以一个字相当于占用了12个位,当然等于9个字节。
....我好久没看C语言了,但是我知道这个东西..
不知道有没有说错,希望可以帮助你理解,你可以再学一下汇编,就比较好理解了