3.2 赋值表达式-高二《新概念C语言能力教程》同步教学课件 (电工版2020)

2023-06-12
| 19页
| 101人阅读
| 0人下载
精品

内容正文:

第3章表达式 第3章表达式 01表达式概述 02赋值表达式 03算术表达式 04强制类型转换及自增自减 05逗号表达式 06典型例题 2 赋值表达式 赋值操作符 赋值操作符=是双目操作符,优先级倒数第2,右结合。 赋值操作符用于赋值,左边不能是字面量或不表示存储单元的表达式。'a' = 23、3 = i、a + b = 23都是非法的表达式。 赋值表达式的作用是给变量赋值,但作为表达式,它也有一个值。 赋值操作符=是双目操作符,优先级倒数第2,右结合。 赋值操作符用于赋值,左边不能是字面量或不表示存储单元的表达式。'a' = 23、3 = i、a + b = 23都是非法的表达式。 赋值表达式的作用是给变量赋值,但作为表达式,它也有一个值。 4 例3-3 分析下面程序的运行情况 矛盾吗? 应如何理解? 程序中先定义两个整型变量i和j,变量j被初始化为3。接着变量i被赋值为1。语句i = i + 1;怎样求值呢? 5 语句i = i + 1;的执行过程 语句中有赋值=和加法+两个操作符,加法+的优先级高,求值顺序是 (i = (i + 1))。 子表达式i+1求值时,运算器进行加法操作,变量i的值会被读取到运算器中,然后和整数1相加,得到和为2,int。 原表达式变为i = 2,求值时,会把运算器中的 2存入变量i中,同时运算器中的2也是表达式 的值。 语句i = i + 1;中有赋值=和加法+两个操作符,加法+的优先级高,求值顺序是(i = (i + 1))。 子表达式i+1求值时,运算器进行加法操作,变量i的值会被读取到运算器中,然后和整数1相加,得到和为2,int。 原表达式变为i = 2,求值时,会把运算器中的2存入变量i中,同时运算器中的2也是表达式的值。 6 语句j = i;执行后,变量i的值是多少? 该语句的作用是将变量i的值存入变量j中,即变量j的值也变为2。 语句执行后,变量i的值依然为2。 两变量的赋值操作可理解为拷贝。赋值时, 变量j的存储状态会设置成与变量i的相同, 但变量i的存储状态不会改变,因此, 其值不变。 语句j = i;的作用是将变量i的值存入变量j中,即变量j的值也变为2。 语句执行后,变量i的值依然为2。 两变量的赋值操作可理解为拷贝。赋值时,变量j的存储状态会设置成与变量i的相同, 但变量i的存储状态不会改变,因此,其值不变。 程序的输出结果为2,2. 7 例3-4 有int i, j, k;,表达式a = b = c = 23合法吗? 原表达式的求值顺序为(a = (b = (c = 23)))。 子表达式c = 23先执行,变量c的值变为23,且该表达式的值为23,int型。接着求值时,原表达式变为(a = (b = 23))。 子表达式b = 23先执行,变量b的值变为23。表达式又变为(a = 23),变量a的值变为23,该表达式的值为23,int型。原表达式的值也就是整数23。 右结合使得给多个变量赋值相同的数的表达式非常简洁。若赋值操作符是左结合,则相关表达式需写作:a = (b = (c = 23))。 赋值操作符为何要右结合?以表达式a = b = c = 23的求值过程为例分析。 原表达式的求值顺序为(a = (b = (c = 23)))。 子表达式c = 23先执行,变量c的值变为23,且该表达式的值为23,int型。接着求值时,原表达式变为(a = (b = 23))。 子表达式b = 23先执行,变量b的值变为23。表达式又变为(a = 23),变量a的值变为23,该表达式的值为23,int型。原表达式的值也就是整数23。 右结合使得给多个变量赋值相同的数的表达式非常简洁。若赋值操作符是左结合,则相关表达式需写作:a = (b = (c = 23))。 8 表达式的合法性 怎样判断一个表达式是否合法? 方法一:按照规则对表达式求值,如果能得到一个值,表达式就合法;如果在求值的过程中出现了错误,表达式非法。 方法二:把表达式变成表达式语句,如果语句能通过编译,相关表达式就合法。 推荐的作法:先利用方法一得出结论,再利用方法二进行验证。养成人工执行代码的习惯! 怎样判断一个表达式是否合法? 方法一:按照规则对表达式求值,如果能得到一个值,表达式就合法;如果在求值的过程中出现了错误,表达式非法。 方法二:把表达式变成表达式语句,如果语句能通过编译,相关表达式就合法。 推荐的作法:先利用方法一得出结论,再利用方法二进行验证。养成人工执行代码的习惯! 9 例3-5 分析表达式a = 3 * 2 = 5 * 7。 求值顺序为(a = ((3 * 2) = (5 * 7)))。 乘法操作符执行后,原表达式变为a =(6 = 35)。子表达式6 = 35中赋值操作符的左操

资源预览图

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