读书笔记系列之《C语言程序设计现代方法》----第四章

x33g5p2x  于2022-02-28 转载在 其他  
字(0.8k)|赞(0)|评价(0)|浏览(165)

第四章 表达式

4.1 算术运算符

把零当作/或%的右操作数会导致未定义的行为。

4.2 赋值运算符

4.2.1 简单赋值

副作用:大多数C语言运算不会改变操作数的值,但是有一些会改变。由于这类运算符不再仅仅计算出值,所以称它们有副作用。简单赋值运算符是已知的第一个有副作用的运算符,它改变了运算符的左操作数。对表达式i
= 0求值产生的结果为0,并(作为副作用)把0赋值给i。

4.2.2 左值

大多数C语言运算符允许它们的操作数是变量、常量或者包含其它运算符的表达式。然而,赋值运算符要求它的左操作数必须是左值。左值表示存储在计算机内存中的对象。而不是常量或者计算的结果。

4.3 自增运算符和自减运算符

后缀和后缀–比一元的正号、负号优先级高,而且都是左结合的。前缀和前缀–与一元的正号、负号优先级相同,而且都是右结合的。

问与答

  1. 问:如果C语言有左值,那它也有右值吗?

答:左值是可以出现在赋值左侧的表达式,而右值是可以出现在赋值右侧的表达式。因此,右值可以是变量、常量或者更加复杂的表达式。

  1. 问:++和–是否可以处理float型变量?

答:可以。自增和自减运算也可以用于浮点数,但实际应用中极少采用自增和自减运算符处理float型变量。

  1. 问:在使用后缀形式的++或–时,何时执行自增或自减操作?

答:C语言标准中引入了顺序点的概念,并且指出应该在前一个顺序点和下一个顺序点之间对存储的操作数的值进行更新。在C语言中有多种不同类型的顺序点,表达式语句的末尾是其中一种。在表达式语句的末尾,该语句中的所有自增和自减操作都必须执行完毕,否则不能执行下一条语句。

​ 其它的一些运算符(逻辑与、逻辑或、条件和逗号)对顺序点也有影响。函数调用也是如此:在函数调用执行之前,所有的实际参数必须全部计算出来。如果实际参数恰巧是含有++或–运算符的表达式,那么必须在调用前进行自增或自减操作。

相关文章