1

我对 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 上运行它。

4

1 回答 1

8

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

i = i + 1;

或者

++i;

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

于 2012-04-01T19:50:15.440 回答