我看到几个小时前就问过this问题了。
我的问题与此有关,但略有不同,这是Johannes Schaub-litb对Oli Charlesworth的回答的评论结果。
i = (0, ++i, 0)
未定义的行为?
P.S: 这仅用于教育目的,与现实生活中的代码或示例无关。如果您只想添加“为什么关心?没有人在现实世界的应用程序中使用它”这样的评论,请忽略这个问题。等
TIA
答案 0 :(得分:12)
不,这不是未定义的行为。
此处未定义行为的唯一可能性是i
的多重修改,但()
内的一个修改与,
运算符中固有的序列点隔离。所以,没有未定义的行为。
答案 1 :(得分:2)
我认为在i = (0, ++i, 0)
中,由于逗号运算符,i在不同的序列点被修改,因此定义了行为。
答案 2 :(得分:1)
如果定义了i = (++i, 0)
,那么这也是如此。也许你应该简化这个问题!