一般情况下,应用程序采用的字符集为gbk, gb2312,该字符集中一个汉字由两个字节组成,所以在普通的C语言中,汉字是按字符串进行存储和输出的。(另:还有utf8字符集,一个汉字由三个字节组成,详情可查阅utf8字符集)
char * p = "张三"
输出多个中文:
printf("%s\n", p )//按字符串输出完整的数据
输出一个中文:printf("%c%c", *p, *p+1 )//按字符输出,同时输出两个字节
输出一个中文串的长度:
printf("sizeof(p)=%d\n", sizeof(p) )//p变量是指针,所以,这里输出的是指针的宽度,一般32位机是4
printf("sizeof(张)=%d\n", sizeof("张") ) // "张"是个常量字符串,sizeof是得到其占内存的大小,字符串都有一个结束符,一个”张“字占两字节,加上字符串结束\0,所以,占三个字节的内存空间
printf("length of (张)= %d\n", strlen("张") )//strlen得到的是字符串有效字符长度(字节数),不包括结束符,所以,长度是两个字节
c++怎么根据gbk码转换成汉字main(){
int a,b=322
float x,y=8.88
char c1='k',c2
a=y
x=b
a=c1
c2=b
printf("%d,%f,%d,%c",a,x,a,c2)
}
本例表明了上述赋值运算中类型转换的规则。a为整型,赋予实型量y值8.88后只取整数8。x为实型,赋予整型量b值322, 后增加了小数部分。字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为01000010,即十进制66,按ASCII码对应于字符B)。
3.复合的赋值运算符
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=。
构成复合赋值表达式的一般形式为:
变量 双目运算符=表达式
它等效于
变量=变量 运算符 表达式
例如:
a+=5 等价于a=a+5
x*=y+7等价于x=x*(y+7)
r%=p 等价于r=r%p
复合赋值符这种写法,对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。
3.10逗号运算符和逗号表达式
在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
其一般形式为: