我理解C使用序列点的概念来识别模糊计算,并且该=运算符不是序列点.但是,我无法看到执行语句时有任何歧义
i = ++i
根据我的理解,这仅仅是评估任何在&i,增加它,并将其存储在同一位置.然而,GCC将其标记为:
[警告]'i'上的操作可能未定义[-Wsequence-point]
我错过了一些关于=功能的方法吗?
编辑:在标记为重复之前,请注意我浏览了有关序列点和未定义行为的其他帖子.他们都没有具体地解决表达式i=++i(注意前增量).提到的表达一般i=i++是a=b++ + ++b,等等.我对它们中的任何一个都毫无疑问.
c increment operator-precedence undefined-behavior sequence-points