2.12 字符数据及字符类型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本节主题: 字符数据及字符类型
C语言的数据类型
基本类型
数据类型
构造类型 指针类型
整型
短整型(short) 整型(int) 长整 型(long int)
浮点型
单精度型(float) 双精度型(double)
字符型(char)
数组类型 结构体类 型(struct) 共用体 类型(union) 枚举 类型(enum)
printf("This\nis\na\n\t\ttest\n\nShe said, \"How are you?\"\n");
趣味转义字符
#include <stdio.h>
int main()
{
printf("笑脸:\001\n"); printf("红黑
桃:\003
\006\n");
printf("听个响:\a\n"); printf("换几行 :a\012 b\n c\x0A d\n"); printf("看字
输入a<回车> c1, c2获得'a',换行符
以 \开头的字符序列——转义字符常量
例如: '\n'是一个字符,代表“换行”符 诸多“控制字符”在程序中无法用一般形式的字符表示,要采用转义字符
换行 响铃等无法显示的符号 单/双引号 ……
所有的转义字符和所对应的意义
转义字符
意义
ASCII码值(十进制)
空类型(void)
字符常量
用单撇号括起来的一个字符,如'a','#','%','D'
字符常量区分大小写字母,如'A'和'a'是不同的。
#include <stdio.h> int main() {
char c1,c2; c1='a'; c2='b'; printf("%c %c\n", c1, c2); return 0; }
母:AB\n"); printf("再看字母: \101\102\n"); printf("再看字母:
\101\b\102\n"); printf("还看字母:
\101\r\102\n"); return 0;
}
错误提示的背后:汉字编码初步
ASCII
标准只需用7位 实际占用1字节 最高位为0
92
\'
代表一个单引号(撇号)字符
39
\"
代表一个双引号字符
34
\0
空字符(NULL)
0
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
转义字符用法示例
printf("%.4f%.4f%.4f\n", 1.01, 2.2334, 3.4); printf("col1\tcol2\tcol3\n"); printf("%.4f\t%.4f\t%.4f\n",1.01, 2.2334, 3.4);
获得缓存区中的输入数据
#include <stdio.h> int main() {
char c1,c2; c1=getchar(); c2=getchar(); printf("%c %c\n", c1, c2); printf("%d %d\n", c1, c2); return 0; }
输入abc<回车> c1, c2获得'a','b'
c1: a c1: 97, i: 3 c2: e
内 幕 : 字 符 的
编 码
ASCII
字符型数据的存储
字符常量用1个字节存储
类型标识符
字节
[signed] char
1
unsigned char
1
范围 -128 ~ 127 0 ~ 255
字符型 (char)
有符号(signed) 无符号(unsigned)
0
汉字
每汉字2字节 为和西文混合使用,每字
节最高位均为1
1
1
字符串常量
用双撇号括起来的部分就是字符串常量
如:"abc","Hello!","a+b","He Lijian"
#include <stdio.h> int main()
{ int a,b,sum; printf("我们 做个算术题\n"); scanf("%d %d", &a, &b); sum=a+b; printf("a+b=%d\n", sum); return 0;
printf("operator: %c, result:...", ch );
getchar()和putchar()
char c; c=getchar();
#include <stdio.h>
putchar(c+32); putchar('\n');
int getchar(); int putchar(int);
char c1, c2; c1 = 97; c2 = 98; printf("%c %c\n", c1, c2); printf("%c %d\n", c1-32, c2-32); return 0; }
字符型数据的输入输出
scanf()和printf()
int x, y;
char ch;
scanf("%d%c%d", &x, &ch, &y);
}
字符串
字符串的存储
用连续的字节存储字符串
字符当数字用?!
#include <stdio.h> int main() {
char c1,c2; int i = 100; c1 = 'a'; i = i - c1; printf("c1: %c\n", c1); printf("c1: %d, i: %d\n", c1, i); c2 = c1 + 4; printf("c2: %c\n", c2); return 0; }
\a
响铃(BEL)
7
\b
退格(BS) ,将当前位置移到前一列
8
\f
换页(FF),将当前位置移到下页开头
12
\n
换行(LF) ,将当前位置移到下一行开头
10
\r
回车(CR) ,将当前位置移到本行开头
13
\t
Байду номын сангаас
水平制表(HT) (跳到下一个TAB位置)
9
\v
垂直制表(VT)
11
\\
代表一个反斜线字符''\'
例:char c1='a',c2='b';
备注 -27 ~ (27 -1) 0 ~ (28 -1)
字符进行数值运算——ASCII是本质
#include <stdio.h> int main() {
int i,j; i='A'; j='B'; printf("%d %d\n", i, j); printf("i+j=%d\n", i+j);
C语言的数据类型
基本类型
数据类型
构造类型 指针类型
整型
短整型(short) 整型(int) 长整 型(long int)
浮点型
单精度型(float) 双精度型(double)
字符型(char)
数组类型 结构体类 型(struct) 共用体 类型(union) 枚举 类型(enum)
printf("This\nis\na\n\t\ttest\n\nShe said, \"How are you?\"\n");
趣味转义字符
#include <stdio.h>
int main()
{
printf("笑脸:\001\n"); printf("红黑
桃:\003
\006\n");
printf("听个响:\a\n"); printf("换几行 :a\012 b\n c\x0A d\n"); printf("看字
输入a<回车> c1, c2获得'a',换行符
以 \开头的字符序列——转义字符常量
例如: '\n'是一个字符,代表“换行”符 诸多“控制字符”在程序中无法用一般形式的字符表示,要采用转义字符
换行 响铃等无法显示的符号 单/双引号 ……
所有的转义字符和所对应的意义
转义字符
意义
ASCII码值(十进制)
空类型(void)
字符常量
用单撇号括起来的一个字符,如'a','#','%','D'
字符常量区分大小写字母,如'A'和'a'是不同的。
#include <stdio.h> int main() {
char c1,c2; c1='a'; c2='b'; printf("%c %c\n", c1, c2); return 0; }
母:AB\n"); printf("再看字母: \101\102\n"); printf("再看字母:
\101\b\102\n"); printf("还看字母:
\101\r\102\n"); return 0;
}
错误提示的背后:汉字编码初步
ASCII
标准只需用7位 实际占用1字节 最高位为0
92
\'
代表一个单引号(撇号)字符
39
\"
代表一个双引号字符
34
\0
空字符(NULL)
0
\ddd
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
转义字符用法示例
printf("%.4f%.4f%.4f\n", 1.01, 2.2334, 3.4); printf("col1\tcol2\tcol3\n"); printf("%.4f\t%.4f\t%.4f\n",1.01, 2.2334, 3.4);
获得缓存区中的输入数据
#include <stdio.h> int main() {
char c1,c2; c1=getchar(); c2=getchar(); printf("%c %c\n", c1, c2); printf("%d %d\n", c1, c2); return 0; }
输入abc<回车> c1, c2获得'a','b'
c1: a c1: 97, i: 3 c2: e
内 幕 : 字 符 的
编 码
ASCII
字符型数据的存储
字符常量用1个字节存储
类型标识符
字节
[signed] char
1
unsigned char
1
范围 -128 ~ 127 0 ~ 255
字符型 (char)
有符号(signed) 无符号(unsigned)
0
汉字
每汉字2字节 为和西文混合使用,每字
节最高位均为1
1
1
字符串常量
用双撇号括起来的部分就是字符串常量
如:"abc","Hello!","a+b","He Lijian"
#include <stdio.h> int main()
{ int a,b,sum; printf("我们 做个算术题\n"); scanf("%d %d", &a, &b); sum=a+b; printf("a+b=%d\n", sum); return 0;
printf("operator: %c, result:...", ch );
getchar()和putchar()
char c; c=getchar();
#include <stdio.h>
putchar(c+32); putchar('\n');
int getchar(); int putchar(int);
char c1, c2; c1 = 97; c2 = 98; printf("%c %c\n", c1, c2); printf("%c %d\n", c1-32, c2-32); return 0; }
字符型数据的输入输出
scanf()和printf()
int x, y;
char ch;
scanf("%d%c%d", &x, &ch, &y);
}
字符串
字符串的存储
用连续的字节存储字符串
字符当数字用?!
#include <stdio.h> int main() {
char c1,c2; int i = 100; c1 = 'a'; i = i - c1; printf("c1: %c\n", c1); printf("c1: %d, i: %d\n", c1, i); c2 = c1 + 4; printf("c2: %c\n", c2); return 0; }
\a
响铃(BEL)
7
\b
退格(BS) ,将当前位置移到前一列
8
\f
换页(FF),将当前位置移到下页开头
12
\n
换行(LF) ,将当前位置移到下一行开头
10
\r
回车(CR) ,将当前位置移到本行开头
13
\t
Байду номын сангаас
水平制表(HT) (跳到下一个TAB位置)
9
\v
垂直制表(VT)
11
\\
代表一个反斜线字符''\'
例:char c1='a',c2='b';
备注 -27 ~ (27 -1) 0 ~ (28 -1)
字符进行数值运算——ASCII是本质
#include <stdio.h> int main() {
int i,j; i='A'; j='B'; printf("%d %d\n", i, j); printf("i+j=%d\n", i+j);