我有以下形式的表达:-
while (count)
{
...
...
index = ((count == 20)? 0 : index++);
...
...
}
现在,三元运算符是C中的序列点,但我相信序列点在测试部分结束。
这种理解是正确的,因此这种说法会导致不确定的行为吗?
最佳答案
正确的。条件评估后有一个序列点,但下一个序列点是分号终止该语句。因此,无论何时count != 20
,您都有未定义的行为
index = index++;
因为对
index
进行了两次修改,而没有插入顺序点。