C 中的未定义行为

Undefined behavior in C

this 网站的最后一节中,他们提供了 f(i = -1, i = -1) 作为未定义行为的示例,这是由于函数参数中子表达式的未排序求值所致。但是由于 在计算所有函数参数和函数指示符之后,在实际函数调用之前有一个序列点 f 将始终用 (-1, -1)i 将被分配 -1。这有没有可能不发生?

这是未定义的行为,因为标准有规定。修改之间没有序列点的变量是 UB。没有“除非两个修改设置相同的值”的例外规则。

... there is a sequence point after the evaluation

确实如此。 经过的评价,所以没什么用。这里的问题是在 i before 序列点上有两个未排序的副作用。这是正式的 UB。