char字符类型(占用1个字节),本质上是整型(每个字符与ASCII码一一对应,文章尾部附上ASCII码对照表)。
字符:在C语言中引单号中的内容即为字符,字符只有一个。如:'A'、'\n'等。
- 类'\n'、'\0'、'\t'等转义字符表面上看是两个字符,但其实是一个字符
- 转义字符原始用 \数值 表示,但为方便记忆有些把 数值 换成 字母。比如上面的 \n、\t等
- 转义字符 \数值 其中 数值是八进制的数值而非十进制的数值
字符串:是由一个字符或多个字符组成,在C语言中双引号中的内容即字符串。如:"hello"、"你好"
下面来个实例演示下:
#include <stdio.h>
/*
时间:2022-03-31 15:01
作者:sgbl888
功能:学习字符常量及字符变量
知识点:
1、char类型本质是整型(每个字符与ASCII码一一对应)
2、转义字符 \数值 表示,为了方便记忆把 数值用字母代替 \字母。如:\n表示换行 \0表示字符串结束。\数值 的数值是八进制非十进制
3、字符串是由一个或多个字符组成的
4、ASCII码 0至31是不可见字符
*/
int main()
{
//字符用单引号,字符串用双引号
char c1 = 'A';
printf("c1 = %d c1=%c\n", c1, c1); //打印出 65和A,%d是按整型打印,%c是按字符打印
//将A变成小写字母a
c1 = c1 + 32; //本质是对数值运算,A对应的ASCII码是65,小写a对应的是97,相差32
printf("c1 = %c\n", c1);
//printf('H'); printf的第一个参数必须是字符串,不能是字符
printf("--------\n");
//用转义字符打印hello,可对照ASCII表(数值记得使用的是八进制而非十进制)
printf("%c%c%c%c%c\n", '\150', '\145', '\154', '\154', '\157');
//用转义字符结束字符串,\0表示字符串的结束
printf("welcome\0to china\n");
//测量char、一个字符、字符串占用多少字节
printf("char use %hd Byte\n", sizeof(char)); //占用1个字节
printf("一个字符占用 %hd 字节\n", sizeof c1); //占用1个字节
printf("A字符占用 %hd 字节\n", sizeof('A')); //输出4,为什么呢?因为'A'实际是数值65,C语言默认数值是int类型。因此占用4个字节
printf("helloworld字符串占 %hd 字节\n", sizeof("helloworld")); //helloworld本身只有10个字节,多出一个字节是\0字符串结束
return 0;
}
实际应用实例:字母大小写转换
#include <stdio.h>
/*
时间:2022-03-31 15:38
作者:sgbl888
功能:输入一个字母,小写则转换成大写,大写则转换成小写
知识点:
1、char加减运算,char本质是整型
2、大写字母与小写字母数值相差32
*/
//自定义函数,功能是一个字符转换大小写
char toggleCase(char c)
{
char result = 0;
//如果是大写字母,转换成小写
if(c>=65 && c<=90) {
result = c + 32;
}
//如果是小写字母,则转换成大写
if(c>=97 && c<=122 ){
result = c - 32;
}
//返回结果
return result;
}
int main()
{
char c = 'H';
char res = toggleCase(c);
//res = toggleCase('A');
if(res!=0){
printf("%c -> %c\n", c, res);
}else{
printf("错误的字母\n");
}
}
ASCII码对照表: