三元运算符和C中的序列点

时间:2012-06-12 11:09:15

标签: c ternary sequence-points synchronisation

我的表达式如下所示: -

while (count)
{
...
...

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

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

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

1 个答案:

答案 0 :(得分:12)

右。在评估条件之后有一个序列点,但是下一个序列点是以分号结束语句。因此,每当count != 20,您都有未定义的行为

index = index++;

因为index被修改两次而没有插入序列点。