在C/C++中,第二条语句
int i = 0;
int j = i++ + i++ + ++i;
调用会导致两种不确定行为:
- 未指定的行为,因为操作数的求值顺序是未指定的。
- 未定义的行为,因为对同一对象
i
的副作用在彼此之间是未排序的。
例如,请参见:
现在,考虑到 Swift 被设计成一种 安全 语言,那么这里的对应情况是什么呢?执行
var i = 0
let j = i++ + i++ + ++i
这段代码是否定义良好?从Swift书中的语言参考可以得出j == 4
的结论吗?