C语言基础教程目录:https://blog.youkuaiyun.com/SparkLee2013/article/details/85229406
1、字符型变量的定义和输出
字符型变量用于存储一个单一字符,使用char关键字进行定义,每个字符型变量占用1个字节。给字符型变量赋值时,使用一对英文半角单引号('')将字符常量括起来。
字符变量实际上并非将字符本身存放到变量内存单元中,而是将此字符对应的ASCII编码(一个十进制数值)存放到变量内存存储单元中;char的本质其实就是一个1字节大小的整数。
#include <stdio.h>
void main() {
// 定义一个字符型变量
// 注:字符'0'在ASCII码表中对应的十进制数字为48,故它与整型0 (int a = 0)是不一样的
char c = '0';
// 使用占位符"%c"输出一个字符型变量
printf("c = %c\n", c);
// 输出字符变量的ASCII码
printf("Decimal c = %d\n", c); // 字符变量对应的十进制数值
printf("Octal c = %o\n", c); // 字符变量对应的八进制数值
printf("Hexadecimal c = %x\n", c); // 字符变量对应的十六进制数值
// 字符型变量与十进制数进行运算时,会自动转换成十进制数参考运算
printf("c - 10 = %d\n", c - 10);
// 可以将ASCII码表的十进制数值输出为字符
printf("97 is %c\n", 97);
}
# 输出结果:
c = 0
Decimal c = 48
Octal c = 60
Hexadecimal c = 30
c - 10 = 38
97 is a
字符的表示有四种形式:1.字符本身、2.字符对应ASCII码表十进制值,3.字符对应ASCII码表八进制值,4.字符对应ASCII码表十六进制值
#include <stdio.h>
void main() {
char c1 = 'a'; // 字符本身
char c2 = 97; // 字符对应ASCII码表十进制值
char c3 = '\141'; // 字符对应ASCII码表八进制值
char c4 = '\x61'; // 字符对应ASCII码表十六进制值
printf("result: %c, %c, %c, %c", c1, c2, c3, c4);
printf("\n\n");
char x1 = '\\'; // 字符本身
char x2 = 92; // 字符对应ASCII码表十进制值
char x3 = '\134'; // 字符对应ASCII码表八进制值
char x4 = '\x5c'; // 字符对应ASCII码表十六进制值
printf("result: %c, %c, %c, %c", x1, x2, x3, x4);
}
# 输出结果:
result: \, \, \, \
result: a, a, a, a
2、转义字符
转义字符 | 含义 | ASCII码值(十进制) |
---|---|---|
\a | 警报 | 007 |
\b | 退格(BS),将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF),将当前位置移到下行开头 | 010 |
\r | 回车(CR),将当前位置移到本行开头 | 013 |
\t | 水平制表符(HT),跳到下一个TAB位置 | 009 |
\v | 垂直制表符(VT) | 011 |
\\ | 代表一个反斜杠字符 | 092 |
\' | 代表一个单引号字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\? | 代表一个问号字符 | 063 |
\ddd | 八进制转义字符,d范围:0 ~ 7 | 3位八进制 |
\xhh | 十六进制转义字符,h范围:0~9,a~f,A~F | 3位十六进制 |
#include <stdio.h>
void main() {
// 八进制转义字符(字符a的八进制为141)
printf("octal 141 is: %c\n", '\141');
// 十六进制转义字符(字符z的十六进制为7A)
printf("hexadecimal 7A is: %c\n", '\x7A');
// 反斜杠转义字符(反斜杠的十进制为92,八进制为134,十六进制为5C)
printf("backslash is: %c %c %c %c\n", '\\', 92, '\134', '\x5C');
// 单引号转义字符
printf("single quote is: %c %c\n", '\'', 39);
// 双引号转义字符
printf("double quote is: %c %c\n", '\"', 34);
// 问号转义字符
printf("question mark is: %c %c\n", '\?', 63);
}
# 输出结果:
octal 141 is: a
hexadecimal 7A is: z
backslash is: \ \ \ \
single quote is: ' '
double quote is: " "
question mark is: ? ?
3、通过键盘输入赋值
#include <stdio.h>
void main() {
// 定义一个字符型变量
char a;
// 通过键盘输入对变量a进行赋值,使用占位符"%c",'&'是取地址操作
scanf("%c", &a);
// 打印变量a的值
printf("a = %c\n", a);
}