是i =(0,++ i,0)未定义的行为

Pra*_*rav 2 c c++

我几小时前就在这里问过这个问题了.

我的问题与它有关,但有点不同,这是Johannes Schaub-litb对Oli Charlesworth回答的评论的结果.

i = (0, ++i, 0)未定义的行为?

PS:这仅用于教育目的,与现实生活中的代码或示例无关.如果您只想添加"为什么关心?没有人在现实世界的应用程序中使用它"这样的评论,请忽略这个问题.等等

TIA

AnT*_*AnT 12

不,它不是未定义的行为.

这里未定义行为的唯一可能是多次修改i,但是内部的一个()通过,运算符中固有的序列点与另一个隔离.所以,没有未定义的行为.