7

我有如下所示形式的表达式:-

while (count)
{
...
...

    index = ((count == 20)? 0 : index++);
...
...
}

现在三元运算符是 C 中的序列点,但我相信序列点在测试部分结束。

这种理解是否正确,因此这种说法会导致未定义的行为吗?

4

1 回答 1

12

正确的。在条件评估之后有一个序列点,但下一个序列点是终止语句的分号。因此,无论何时count != 20,您都有未定义的行为

index = index++;

因为index被修改了两次,没有干预序列点。

于 2012-06-12T11:13:19.907 回答