我了解 C 使用序列点的概念来识别模棱两可的计算,并且该=
运算符不是序列点。但是,我在执行该语句时看不到任何歧义
i = ++i
根据我的理解,这仅相当于评估 at 的任何内容&i
,将其递增并将其存储回同一位置。然而,GCC 将其标记为:
[警告] 'i' 上的操作可能未定义 [-Wsequence-point]
我是否遗漏了一些有关=
功能的信息?
编辑:在标记为重复之前,请注意我已经浏览过其他关于序列点和未定义行为的帖子。它们都没有专门解决表达式i=++i
(注意前增量)。提到的表达式通常是i=i++
,a=b++ + ++b
等。我对其中任何一个都没有疑问。