每一个字符有一个唯一的编码。称为ASCII码 (American Standard Code for Information Interchange) 常用字符有128个,编码从0到127。 六.字符的表示 控制字符的ascii码:0~32和127;普通字符共有94个。 存储一个需要一个字节的空间; 例如:字符’a’ 在内存中存的是ASCII码的二进制为: 01100001; 字符十六进制ASCII码十进制ASCII码 空格 20H 32 ‘0’~‘9’ 30H~39H48~57 ‘A’~‘Z’ 41H~5AH65~90 ‘a’~‘z’ 61H~7AH97~122 一. 字符常量 字符常量需要用单引号括起来。 例如: 'A' 、'b' 、'0' 等。 字符常量分为: 常义字符和转义字符 转义字符: 用于表示ASCII字符集中的控制代码和用于功能 定义的字符。 [注]:是字符,但不好表示; \n —— 回车换行(ASCII码为10) \t —— 水平制表符 (TAB键) \b —— 退格 \f —— 换页 \a —— 响铃(ASCII码为7) \“ ——“ \’ —— ’ \\ —— \ (1) 常用的转义字符: (2) 任何字符都可以用下面的形式表示: \字符的ASCII值 其中ASCII码值只能用三位八进制或两位十六进制表示 。 三位八进制的表示:\ddd ; (d: 0~7); 两位十六进的表示: \xdd ; (d:0~ 9;A~ F ) 例2:字符常量‘0’,可以用: ‘\x30’,‘\060’或‘\60’表示 例1:字符常量 ‘A’,还可以用: ‘\101’ 和 ‘\x41’ 来表示; 例3:字符常量‘\n’, 还可以用: ’\012’或‘\12’ 和 ‘\x0A’来表示; 二.字符变量 Ø 一个字符变量用来存放一个字符常量,即一 个单个字符。 Ø 字符变量的定义形式: char c1,c2; Ø 在内存单元中存储的是字符的ASCII码, Ø 字符变量的使用方式 如:c1=‘a’; c2=‘\n’; c2=c1; Ø 字符数据与整型数据可以互相赋值。 a 97,32 int i , j ; char c ; i = ‘a’ ; c = 97 ; j = i + c ; Ø 字符数据可以字符形式或整数形式输出。 三. 字符数据与整型数据的关系 如:char c1,c2; c1=97; c2=‘ ’; printf(“%c%c”,c1,c2); printf(“%d,%d”,c1,c2); 四. 字符串常量 (C字符串) Ø 双引号括起的一串字符 如:“how are you”;“china\n”; “a”; “5\tbc”; “123.4” Ø字符串常量的存储方式 以字符‘\0’(NULL)作为字符串结束标志,C语言中出现 的所有由双引号括起来的一串字符中一定包含该字符。 c hin a \0字符串“china” 97 \0 字符串“a” 01100001 00000000 97 字符‘a’ 01100001 [注1]: ‘a’与“a”的区别: [注2]:“” 与“ ”的区别: I say:”Goodby!” 例1: 在C语言中,合法的字符常量是: (a) ‘084’; (b) ‘\x43’, (c) ‘ab’; (d) “\0” 例3:printf(“c:\\user\\f1.exe\n”); 输出什么? 串长是多少? 串长:17 c:\user\f1.exe 串长:15 例2:printf(“I say:\”Goodby!\”\a\n”) 输出 什么? 串长是多少? 一.C语言的各种运算符 [ ]下标运算符 . -分量运算符 (类型)强制类型转换 sizeof求字节数 * float f=3; 则: 例:表达式: 5+7%2 + 7%2*4 的值是多少? -5%2 = -1 5%-2 = 1 1%10 = 1 5%1 = 0 5.5%2 = () ② 只有两个整型量才可以做’%’运算, 结果为两个整型量整除后取余数;且 余数与被除数的符号相同。 a/2=1 a/2.0=1.5 f/2=1.5 例:将一个4位整数n,分离出个位、十位、 百位和千位。 例如:n=7341;设n=abcd, 7 = 7341 / 1000; a=n/1000 3 = 7341 % 1000 /100;b=n%1000/100 4 = 7341 % 1000 %100/10;c=n%1000%100/10 1 = 7341 % 10; d=n%10 一. 赋值运算符 = 运算形式:变量 = 表达式; (1) 双目运算,左边是简单变量,右边是表达式; (2)赋值转换规则: 使赋值号右边表达式值自动转 换成其左边变量的类型; 例:int k; k=3.1415; 问:k的值是什么? (3) 运算结果是表达式的值; (4)可出现多个‘=‘运算符,结合规则:从右向左。 例1: x=y=z=5; 例2: 以下表达式是否正确? (a) x=y=z=3+r; (b) x=z+(z=3+r); (c) x=2+z=3+r; 二. 算术赋值运算----组合运算 a+=x; a-=x; a*=x; a/=x; a%=x ; a=a+x; a=a-x; a=a*x; a=a/x; a=a%x; 优先级偏低;结合规则为:从右向左 例1: x *=y+8; 等价于x=x * (y+8); 例2: int a=12; 执行 a+= a-= a*=a; a=? 相当于:a+= (a-= (a*=a)) 相当于:a+= (a-= (a =a*a)) 相当于:a+= (a= a- (a =a*a)) 相当于:a = a + (a = a - (a =a*a)) 例: int a=2; 表达式 (a++)++ 是否正确? 相当于:(a++)=(a++)+1;即:a=a+1=a=a+1+1 单目运算符: ++ ,-- 。 优先级高。 例如:x++; x--; ++x; --x 等。 其中:x++ (或++x); 相当于: x=x+1; 区别于:x+1; ① 只作用于变量; 例如:3++ × ② 前置运算和后置运算的区别: 前置运算:先执行++(--),后参与表达式运算,有优 先级位置; 后置运算:先参与表达式运算,后执行++(--)运算, 没有优先级位置; × 例1: int a=2,b=3; 执行:x=a++ + ++b; x= a= b= 例2: int x=2; y=x++ * x++; y=?; x=? int x=2; y=++x * ++x; y=?; x=? int x=2;y=++x * x++; y=? x=? 例3: 设a=2; 问下面两组语句执行后的区别? { printf(“%d”, --a); printf(“%d”, a); } { printf(“%d”, a--); printf(“%d”, a); } 不同类型的数据(int;float;char)可以进行混合运算 如: 10 + ‘a’ + 1.5 - 8765.1234 * ‘b’ (1)混合运算的规则 Ø 不同类型数据混合运算,先转化为同一类型。 Ø 转化规则(运算符“=”除外) •将“较低类型”转换为“较高类型”(数值不变)后, 再进行运算。 •运算结果是“较高类型”的数据。 例: 3.0+4/2 表达式的值 ?5.05.0 3.0+23.0+2.0 形式: (数据类型)表达式 当需要做一些特殊的运算,必须使用强制类型转换 运算。 例1:int k=3; float x; 执行: x=1/k; 问x的值? 如何让x得到0.3333333的值? 例2:int a=3,b=4; float x=10.4,y=3.5; 表达式:(float)(a+b)/2+(int)x%(int)y的结果? [注意] (1)转换是暂时的,定义是永久的; (2)它是一个运算符, 单目运算, 优先级为2; (2) 强制类型转换运算: 本 章 习 题 一. 填空题: 可以不做的是: 1,6,14,17,19,26,30; 二. 填空题 1, 2, 4, 5, 6, 12, 15, 16, 17,19,21,26,27,29,30; 三. 简答题: 4, 6;
展开阅读全文