第10讲 数据类型和表达式(2)

上传人:飞*** 文档编号:51912053 上传时间:2018-08-17 格式:PPT 页数:36 大小:456KB
返回 下载 相关 举报
第10讲 数据类型和表达式(2)_第1页
第1页 / 共36页
第10讲 数据类型和表达式(2)_第2页
第2页 / 共36页
第10讲 数据类型和表达式(2)_第3页
第3页 / 共36页
第10讲 数据类型和表达式(2)_第4页
第4页 / 共36页
第10讲 数据类型和表达式(2)_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第10讲 数据类型和表达式(2)》由会员分享,可在线阅读,更多相关《第10讲 数据类型和表达式(2)(36页珍藏版)》请在金锄头文库上搜索。

1、第十讲 数据类型和表达式(二) /学习目标 知道自动类型转换的规律 会使用强制类型转换 进一步理解各种算术表达式、赋值表达 式、关系表达式、条件表达式、逗号表 达式 不同类型数据的混合运算,先转换为同一 类型,再运算。6.4.1 自动类型转换 非赋值运算的类型转换 赋值运算的类型转换6.4.2 强制类型转换6.4 类型转换6.4.1 自动类型转换(非赋值运算) 水平方向:自动 垂直方向:低 高 高 double floatunsigned long longunsigned unsigned short低 int char, short自动类型转换(非赋值运算)A + 12 10.05 657

2、766.95高 double floatunsigned long longunsigned unsigned short低 int char, short自动类型转换(赋值运算)变量 = 表达式 计算赋值运算符右侧表达式的值 将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符右侧表达式的类型 自动转换成 赋值号左侧变量的类型自动类型转换(赋值运算)doub le x; x = 1;x = ?short a = 1000; char b = A; long c; c = a + b;c = ?int ai; ai = 2.56;ai = ?short bi; bi = 0x12345678L

3、bi = ?x=1.000000ai=2c=1065bi=221366.4.2 强制类型转换强制类型转换运算符 (类型名) 表达式(double)3 (int)3.8 (double)(5/2) (double)5/23.0 3 2.0 2.5强制类型转换示例# include int main(void) int i;double x; x = 3.8;i = (int) x;printf(“x = %f, i = %d n“, x, i);printf(“(double)(int)x = %fn“, (double)(int)x); printf(“ x mod 3 = %dn“, (in

4、t)x % 3); return 0; x = 3.800000, i = 3 (double)(int)x = 3.000000 x mod 3 = 0表达式:由运算符和运算对象(操作数) 组成的有意义的运算式子,它的值和类型 由参加运算的运算符和运算对象决定。 运算符:具有运算功能的符号 运算对象:常量、变量和函数等表达式算术表达式、赋值表达式、关系表达式、 逻辑表达式、条件表达式和逗号表达式等 6.5 表达式 6.5.1 算术表达式算术运算符 单目 + - + - 双目 + - * / %注意 / 整数除整数,得整数 1/4 = 0,10/3 = 3 % 模(求余): 针对整型数据 5%

5、6 = 5,9%4 = 1,100%4 = 0 + 和 单目运算符, +10 和 10 双目运算符, x+10 和 y 10 双目运算符两侧操作数的类型要相同,否则,自 动类型转换后,再运算。自增运算符+和自减运算符-int n; n+ +n n- -n (只适合变量运算) 使变量的值增1或减1 +n n+ n = n + 1 -n n- n = n - 1取变量的值作为表达式的值 +n:n = n + 1;取n值作为表达式 +n 的值 n+:取n值作为表达式 n+ 的值;n = n + 1自增运算和自减运算in t n, m;n =2; m =+n;n =2; m =n+;n= 3n= 3m

6、= 3m= 2m=n n=n+ 1n=n+1 m=n算术运算符的优先级和结合性单目 + - + - -双目 * / %双目 + -高低从右向左-5 + 3%2 = (-5) + (3%2) = -4 3 * 5 % 3 = (3*5) % 3 = 0 -i+ -(i+)写出C表达式数学式 C算术表达式s(s-a)(s-b)(s-c)(x+2)e2x(x+2)*pow(exp(1),2*x)(x+2)*exp(2*x)6.5.2 赋值表达式 赋值运算符 = x = 3*4优先级较低,结合性从右向左 x = y = 3 x = (y = 3)赋值表达式变量 = 表达式 计算赋值运算符右侧表达式的值

7、 将赋值运算符右侧表达式的值赋给左侧的变量 将赋值运算符左侧的变量的值作为表达式的值右侧表达式的类型自动转换成左侧变量的类型int n; double x, y; n = 3.14 * 2; x = 10 / 4; x = (y = 3);复合赋值运算符 赋值运算符 简单赋值运算符 = 复合赋值运算符 复合算术赋值运算符 += -= *= /= %= 复合位赋值运算符 赋值表达式 变量 赋值运算符 表达式 x += exp 等价于 x = x + exp x *= y - 3x = x * (y-3) 6.5.3 关系表达式关系运算符 比较两个操作数,比较的结果:真 假 x y x = y x

8、 != y 优先级 算术运算符 = = != 赋值运算符 左结合a b = c d = a b ch a + 1 d = a + b c 3 b)= c d = (a b) ch (a + 1) d = (a + b) c) (3 b = c d = a b ch a + 1 d = a + b c b - 1 = a != c 3 = 3 int n; (n0) ? 2.9 : 1 n = 10 n = -102.91.0if ( x0 )y=x+2; elsey=x*x;x+2 x0 y =x2 xb) ? a : b;if ( ab )z = a; elsez = b;6.5.6 逗号表

9、达式表达式1, 表达式2, , 表达式n先计算表达式,然后计算表达式, ,最后计算表达式n的值,并将表达式n的值作 为逗号表达式的值。int a, b, c; (a=2), (b=3), (c=a+b);逗号运算符的优先级最低,左结合。a=2, b=3, c=a+bsum = 0; for(i = 0; i 对操作数右移给出的位数 复合位赋值运算位逻辑运算x=0 00000000 00000000 y=3 00000000 00000011 x printf(“input characters: “);ch = getchar();while(ch != n)if(ch = A putchar(ch);ch = getchar(); rerurn 0; input 10 characters: Reold 123?rEOLD 123?while(ch = getchar() != n)(ch = getchar() != n ch = getchar() != n 等价吗?作 业 作业 习题6:1、2、4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号