C语言中有个术语叫:副作用
副作用其实是对数据对象或文件的修改。(数据对象的定义是:用于存储值的数据存储区域)
例如语句 states = 50;
从C语言的角度来讲:这个赋值表达式的副作用是将变量的值设置为50;目的是对表达式求值;
但是使用赋值表达式的主要目的(真正目的)就是使用其副作用(将变量的值设置为50);
除此之外,递增、递减运算符也有副作用;我们使用它们其实主要目的是使用其副作用。即递增、递减的副作用;
例如printf()函数,我们使用它的目的是使用其副作用,其副作用是显示信息。它从C语言角度来说,目的是返回待显示字符的个数。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
序列点:
是程序执行的点,所有的副作用都在进入下一步之前发生;
语句中的分号标记了序列点;
当然不一定要分号才表示序列点;
完整表达式的结束也是一个序列点。
例如:
while (guests++<10)
printf("%d \n",guests)
上面程序当中:guests++<10 就是一个完整的表达式,该表达式的结束也是一个序列点。
guests++<10的意思是guests先跟10比较(比较会得到布尔值True、False,这个过程是求值,也就是C语言角度来说的目的),再递增(把guests的值加1,即对数据对象或文件的修改,即副作用。这个副作用其实也是我们编写程序角度的主要目的。)。
guests简单概括就是先比较(求值)再递增。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
完整表达式:
这个表达式不是另一个表达式的子表达式;
表达式语句中的表达式,循环条件的测试条件表达式,都是完整表达式。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
补充一下表达式expression、语句statement的概念:
表达式:
表达式是由运算符和运算对象组成的。
运算对象是运算符操作的对象。
对简单的表达式是一个单独的运算对象。
表达式最重要的特性之一就是每个表达式都有一个值。
要获得这个值,必须根据运算优先级规定的顺序去操作。
语句:
语句是C语言的基本构建块。
一条语句相当于一条完整的计算机指令。
在C中,大部分语句都以分号结尾。
最简单的语句是空语句。
真正有效的语句是可以改变值或调用函数;
注意:语句和表达式不能划等号;
语句的分类:表达式语句、迭代语句、跳转语句、声明等。
声明创建了名称和类型,并为其分配内存空间和位置;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++