回复 4楼 wpzqyjever
既对,也不对。
在早期,普遍采用ANSI编码的时候,确实以1个8位二进制码表示字符,对美国标准的ASCII编码来说,更是连8bit都没用全。所以ANSI规定,字符是1byte的无符号整数。但要注意,不是世界上任何地方都使用ASCII编码,对同一个字符编码,在英国、德国和在美国可能是不同的字符,具体这个整数代表什么字符,由编译器的设定开关设定,那个人是可以调整的,所以在写程序的时候,如果要兼容性(打算程序通行全世界的),就不要用数字直接代替字符(有人很喜欢不写字符而写数值,显得懂C有特色,能别人所不能)。
以上,是单字节字符编码的架构,即使是单字节编码,也不要随便假定。然而,时至今日,随着世界日益全球化,程序不会再在美国编码上打转了,当今ANSI已经接纳使用Unicode编码规则,那是双字节编码,即一个字符是2byte,这个字符集囊括全世界的绝大多数字符还有剩余,其中包含汉字(中日韩大字符集是其中的子集)。在Windows系统中,是全面使用Unicode字符编码的,即使是1楼那样的字符串,每个阿拉伯数字也是2byte。在当今的编译器中,为了区分这样的两种编码,在字符串字面值前要加标识:1楼那样的写法"123456"是ANSI编码,单字节的,如果是L"123456",则是Unicode编码,双字节的。但这仍然与编译器的设定有关,某些时候,编译器可能被设定为默认是Unicode编码,此时"123456"未必仍然是单字节的字符序列。全面采用Unicode,淘汰ANSI的日子,不会太远了。
1楼的问题,按常规当ANSI解释,是可以的。