语句 states = 50; 的副作用(side effect)是将变量 states 的值设置为50。这是副作用?这看起来更像是主要目的!然而,从 C 的角度来看,主要目的是对表达式求值。给 C 一个表达式 4 + 6,C 将计算它的值为 10。给 C 一个表达式 states = 50,C 将计算它的值为 50。使用这个表达式的值还可以构造这样的表达式 states2 = states = 50。给赋值运算符一样,增量运算符和减量运算符也有副作用,它们主要由于副作用而被使用。
所用的副作用都在进入下一个顺序点(sequence point)前被计算。顺序点是程序执行中的一点。在 C 中,语句里的分号标志了一个顺序点。它一位着在一个语句中赋值运算符、增量运算符及减量运算符所作的全部修改必须在程序进入下一个语句前发生。任何一个完整的表达式(full expression)的结束也是一个顺序点。
完整的表达式--它不是一个更大的表达式的子表达式。完整表达式的例子包括一个表达式语句里的表达式和在一个 while 循环里做为判断条件的表达式。