字符型变量(char)
一、定义
尽管编写代码时我们会用直观的字母或符号来表示字符,但每个字符本质上也是一个数值。字符变量一般用char表示,在内存中,它通常占1个字节,用于存储字符的ASCII码值(或其他字符编码方式)。一般char是有符号的,范围通常是从-128到127。在某些系统中,char可以被声明为无符号型,即 unsigned char,范围通常是从0到255。下面是ASCII码值0~127对应的字符。
定义一个字符变量char ch = 'A'; (单引号表示一个字符)。ch在内存的数值用十六进制表示是41(代码中,通常在某数前面加0x来表明这个数是用十六进制,比如0x41,是十进制的65,即字符‘A’的ASCII码)。
因此,char也可直接定义成ASCII码值,例如:
int main() {
char ch = 65; //或用十六进制表示:char ch =0x41,都表示字符A
printf("Character representation of ch: %c\n", ch); //按字符格式打印ch
return 0;
}
这样打印出来的结果也是A,只是不那么直观。
Tips:
下面展示了常用的printf()格式化打印。从底层原理上看,所有变量都是二进制存储的数值,但printf()中可使用格式说明符,将同一数值按不同格式类型打印。例如,%c表示按字符格式打印参数,上面程序打印就显示字符A。如果你希望打印此字符变量的整数值而不是字符,可以使用 %d 格式说明符;%x则用于按16进制打印。举个例子:
如果需要依次打印多个变量的值,可以这样:printf(" %d\t%d\n", fahr, celsius); 来打印两个整数 fahr 与 celsius 的值,并在两者之间留一个制表符的空间(\t)。
二、示例
字符常用的加减运算,也是在ASCII码数值的基础上进行的。比如两字符相减‘9’-‘0’的含义就是57减去48,结果是整数值9;‘C’-‘A’即67 – 65,结果是2。举一个实际应用的例子: