char类型变量可以直接使用单引号把一个字符括起来,来给变量赋值
也可以使用转义的方式来给变量赋值:例如char c = ‘\0’;这是一种转义字符,也可以给普通字符进行转义
如char c1 = ‘\61’,这里表面上看,是把ASCII码为61的赋值给变量,但实际上这里面的61是一个八进制数,变为十进制是49,即’1’
也可以用十六进制来赋值,如char c2 = ‘\x31’,也是’1’
几个重要的字面量literal(纯常量,是保存在常量区内存中)
写法 | 表示内容 | 写法 | 表示内容 |
---|---|---|---|
\n | new line | \b | backspace |
\r | return(回车) | \t | table |
\’ | 单引号,表示字符的字面量 | \" | 表示字符串字面量 |
以上内容都ASCII字符集规定的,最开始,只使用128个字符,即7个字节,后来扩展到256个字符,8个字节
如果想保存中文,char类型的长度显然不能名数(中文字符成千上万),所以中文使用的Unicode
字符集,面变量类型调整为宽字符类型
在C95下,定义了wchar_t
类型来表示宽字符
wchar_t c3 = L'中';
\\ 这其中的wchar_t
是unsigned short
类型的别名,因为short
就是16位的类型,可以保存Unicode
类型值char *cs = "中";
字符编码问题:码点code point
UTF-8
来保存中文字符,但编译器会以GBK的编码来编译源文件,如果这个中文被保存成UTF-8
格式不可识别,或认定错误的字符,就无法编译下去,程序会报错关于字符编码的问题还需要另写文章来学习