表达式可以修改对象的值在连续的 “序列范围一次只点”。
Microsoft 专用
C++ 语言定义当前未指定序列点。Microsoft C++ 使用同一序列点为不涉及任何表达式的 ANSI C 相关 C 运算符和重载运算符。当重载运算符,从排序的运算符的语义更改函数调用排序。Microsoft C++ 使用以下序列点:
逻辑 " 与 " 运算符的左操作数 ( )。逻辑 " 与 " 运算符的左操作数进行计算,然后任何副作用在继续操作之前全部完成。不能保证逻辑与运算符的右操作数将计算。
逻辑或运算符的左操作数 (||)。逻辑或运算符的左操作数进行计算,然后任何副作用在继续操作之前全部完成。不能保证逻辑或运算符的右操作数将计算。
逗号运算符左侧的操作数。逗号运算符左侧的操作数进行计算,然后任何副作用在继续操作之前全部完成。逗号运算符的两个操作数始终计算。
函数调用运算符。函数调用表达式和所有参数传递给函数,包括默认参数,进行计算,然后任何副作用在项之前完成给函数。不计算指定序列中的参数或函数调用表达式中的。
条件运算符的第一个操作数。条件运算符的第一个操作数进行计算,然后任何副作用在继续操作之前全部完成。
完整的初始化表达式的结尾,如初始化的末尾在声明语句中的。
在表达式语句的表达式。表达式语句包括分号后跟一个可选表达式 (;)。该表达式为其副作用完全计算。
在选择 (如果或开关) 语句的控制表达式。该表达式进行计算,然后任何副作用全部完成,在代码依赖于将选择执行之前。
while 的控制表达式或执行语句。该表达式进行计算,然后任何副作用在一段时间的下一次迭代的任何语句之前全部完成或执行循环。
一个三个表达式中的每一个语句。每个表达式进行计算,然后任何副作用在移动全部完成移动到下一个表达式之前。
在返回语句的表达式。该表达式进行计算,然后任何副作用全部完成,在控件回调用函数之前。