我的表达式如下所示: -
while (count)
{
...
...
index = ((count == 20)? 0 : index++);
...
...
}
现在三元运算符是C中的序列点,但我相信序列点在测试部分结束。
这种理解是否正确,因此这种说法会导致未定义的行为?
答案 0 :(得分:12)
右。在评估条件之后有一个序列点,但是下一个序列点是以分号结束语句。因此,每当count != 20
,您都有未定义的行为
index = index++;
因为index
被修改两次而没有插入序列点。