关于int的未定义增量的警告

时间:2012-04-01 19:46:49

标签: c avr-gcc

我对avr-gcc有一个奇怪的问题。如果我这样做:

int i = 0;
i = ++i;

导致编译器警告:

warning: operation on ‘i’ may be undefined

这里有什么问题?

如果被重写为

i = i + 1;

不会导致警告。

avr-gcc是版本4.3.4,我在Ubuntu 10.04上运行它。

1 个答案:

答案 0 :(得分:8)

如果您打算简单地增加i,请使用

i = i + 1;

++i;

(或i++),但不是两者。 C的规则不允许您在单个序列点之前修改变量两次。 preincrement(++i)和赋值(i =)都会修改i的值。