Ternary operator and Sequence Points in C

2019-01-25 14:19发布

I've an expression of the form shown below :-

while (count)
{
...
...

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

Now Ternary operators are sequence points in C but I believe that the sequence point ends at the test part.

Is this understanding correct and as such will this statement lead to undefined behaviour ?

1条回答
Luminary・发光体
2楼-- · 2019-01-25 14:29

Right. There's a sequence point after the evaluation of the condition, but the next sequence point is the semicolon terminating the statement. So whenever count != 20, you have the undefined behaviour

index = index++;

since index is modified twice without intervening sequence point.

查看更多
登录 后发表回答