3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)

2024-08-11
| 32页
| 88人阅读
| 10人下载
普通

内容正文:

第三章 数据与运算 1 CONTENTS 目录 01 02 逻辑运算符与逻辑表达式 关系运算符与关系表达式 03 赋值运算符与赋值表达式 04 位运算符与表达式 05 其它运算符与表达式 06 数据类型的转换 知识树 My First Template 赋值运算符与赋值表达式 C语言程序设计 4 C语言 赋值运算符与赋值表达式 赋值运算符 简单的赋值就是把一个表达式的值赋给一个变量。 例如: i = 5 i = j + 1 My First Template C语言 在赋值符“=”之前加上其它运算符,可以构成复合的运算符。如: += 、 -= 、 *= 、 /= 、 %= 例如: i + = 2 等价于 i = i + 2 a * = b + 5 等价于 a = a * (b + 5) x% = 3 等价于 x = x%3 int x=6; 执行x+=x-=x*x;后,x的值是? 复合的赋值运算符 赋值运算符与赋值表达式 My First Template C语言 计算过程如下: (1) 先进行x*x的计算,结果为36 再进行x- =36的计算,相当于x=x-36=-30 最后进行x+=-30的计算,相当于x=x-30=-60 已知x=6,执行x+=x-=x*x;后,x的值是? 1、运算符的优先级 2、考虑的是运算的结合性 赋值运算符与赋值表达式 My First Template C语言 由“=”连接的式子称为赋值表达式。其一般形式为: 变量=表达式 功能:计算表达式的值再赋予左边的变量。 例如:x=3 y=x+3 结合性: 如:a=b=c=1 可理解为:a=(b=(c=1)) 从右向左 赋值表达式 赋值运算符与赋值表达式 My First Template C语言 设原来a=12,且a和n已经定义为整型变量。计算: 1.a+=a 2. a-=12 3.a*=2+3 4.a/=a+a a%=(n%=2),n的值等于5 a+=a-=a*=a 赋值运算符与赋值表达式 My First Template C语言 假设变量a=3;b=7;编程实现将a,b变量的值交换,并输出a,b的值。 布置任务 赋值运算符与赋值表达式 My First Template 位运算符与表达式 C语言程序设计 11 C语言 位运算符与表达式 位运算符 为运算符包括6种: 按位与(&) 按位或(|) 按位非(~) 按位异或(^) 左移位(<<) 右移位(>> 取反(非)运算符是单目运算符,其余是双目运算符,要求符号左右两侧各有一个运算量; 位运算的运算对象只能是整型或字符型数据,而不能够是浮点型数据; 位运算的优先级从高到低依次是按位取反、移位、按位与、按位异或、按位或 My First Template C语言 位运算符与表达式 按位取与运算(&) 按位与运算符“&”是双目运算符。其功能是参与运算的两个数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。 源码就是把一个数转化为二进制(1个字节);1、对于正数,补码与原码相同;2、对于负数,数值位的绝对值取反后在最低位加1,通俗的讲就是将这个负数转换的二进制数,各位取反,末位加1。 My First Template C语言 位运算符与表达式 按位取或运算(|) 按位或运算符“|”是双目运算符。其功能是参与运算的两个数各对应的二进位相或。只要对应的两个二进位有一个为1,结果位就为1,只有两个都为0的时候才为0。参与运算的两个数均以补码出现。 My First Template C语言 位运算符与表达式 按位取异或运算(^) 按位异或运算符“^”是双目运算符。其功能是参与运算的两个数各对应的二进位相异或,当两对应的二进位相异时,结果为1,相同则为0。参与运算数仍以补码出现 My First Template C语言 位运算符与表达式 左移位运算(<<) 左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0 例如: a=3; a<<4; 指把a的各二进位向左移动4位。如a=00000011,左移4位后为00110000(十进制48)。 需要指出的是,高位左移后溢出,舍弃不起作用。左移1位相当于该数乘以2,左移2位相当于该数乘以4,但此结论只适合该数左移时被溢出舍弃的高位中不包含1的情况。例如,假设一个字节存一个整数,若a为无符号整数,则a=64时,左移1位时溢出的是0,左移2位时,溢出的高位中包含1。 My First Template C语言 位运算符与表达式 右移位运算(>>) 右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。 例如: a=15; a>>2; 表示把000001111右移为00000011(十进制3)。 说明:对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。 My First Template C语言 位运算符与表达式 按位取反运算(~) 求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。 例如~9的运算为: ~(0000000000001001)结果为:1111111111110110 My First Template 其它运算符与表达式 C语言程序设计 19 C语言 其它运算符与表达式 1. 求字节数(长度)运算符:sizeof 2. 逗号运算符:, 3. 条件运算符(三目运算符): ? : My First Template C语言 其它运算符与表达式 格式:sizeof( 数据类型 ) 或 sizeof( 表达式 ) 优先级:2(和++ -- -负号 !一样 高于算术运算的* /) 结合性:自右向左 例如: • sizeof(double) 值为8 • sizeof(char)   值为1 • float f; int i, a; i=sizeof(f);     i的值将为4 i=sizeof(a); i的值将为4 用于计算被运算对象所占字节数 1. 求字节数(长度)运算符:sizeof My First Template C语言 • 逗号表达式的一般形式: 表达式1, 表达式2, 表达式3, ……, 表达式n 表示由左到右依次计算各表达式之值,逗号表达式之值为表达式n之值。 如:a=3*5, a*6 其它运算符与表达式 优先级: 最低 2. 逗号运算符:, My First Template C语言 其它运算符与表达式 #include <stdio.h> main() { int x,y=7,z=4; x=(y=y+6,y/z); printf("x=%d ",x); } 运行结果:x=3 例:读程序,写结果。 逗号运算符应用 My First Template C语言 • 条件表达式的一般形式: 表达式1 ? 表达式2 : 表达式3 • 条件表达式求值过程: 表达式1 取表达式2值 取表达式3值 T F 其它运算符与表达式 表达式1要能得到逻辑值 3. 条件运算符(三目运算符): ? : 其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。 My First Template C语言 max=25 其它运算符与表达式 例如:int a=10,b=25; max=a>b?a:b ; 条件运算符是一对运算符,不能分开单独使用。 My First Template C语言 其它运算符与表达式—总结 1. 求字节数(长度)运算符:sizeof 2. 逗号运算符:, 3. 条件运算符(三目运算符): ? : My First Template C语言 其它运算符与表达式 读程序,写结果。 例1: a=3*5,a*4 a=3*5,a*4,a+5 例2: int a=1, b=3, c=2, d; d = a>b ? a : c>b ? c : b; 布置任务 My First Template 数据类型的转换 C语言程序设计 28 C语言 数据类型的转换 隐式转换 什么情况下发生 运算转换------不同类型数据混合运算时 赋值转换------把一个值赋给与其类型不同的变量时 输出转换------输出时转换成指定的输出格式 函数调用转换------实参与形参类型不一致时转换 运算转换规则:不同类型数据运算时先自动转换成同一类型 各类数据间的混合运算 隐式 显示 My First Template C语言 double float long unsigned int char,short 低 高 各类数据间的混合运算 转换的规则按图所示。 数据类型的转换 My First Template C语言 int double double double double int char float float double long int 例:10 + 'a' + i * f - d / e 数据类型的转换 My First Template C语言 显式转换(强制转换) 一般形式:(类型名 )(表达式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变 数据类型的转换 My First Template $$

资源预览图

3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)
1
3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)
2
3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)
3
3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)
4
3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)
5
3.2赋值运算符与赋值表达式(课件)-《 C语言程序设计》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。