小编Qur*_*ous的帖子

c - 为什么我= ++我调用未定义的行为?

我理解C使用序列点的概念来识别模糊计算,并且该=运算符不是序列点.但是,我无法看到执行语句时有任何歧义

i = ++i

根据我的理解,这仅仅是评估任何在&i,增加它,并将其存储在同一位置.然而,GCC将其标记为:

[警告]'i'上的操作可能未定义[-Wsequence-point]

我错过了一些关于=功能的方法吗?

编辑:在标记为重复之前,请注意我浏览了有关序列点和未定义行为的其他帖子.他们都没有具体地解决表达式i=++i(注意增量).提到的表达一般i=i++a=b++ + ++b,等等.我对它们中的任何一个都毫无疑问.

c increment operator-precedence undefined-behavior sequence-points

3
推荐指数
1
解决办法
1156
查看次数