当前位置:我的异常网» C++ » GCC4.2.4编译时提示 warning: operation on 'b' may
GCC4.2.4编译时提示 warning: operation on 'b' may be undefined,该怎么处理
www.MyException.Cn 网友分享于:2013-02-13 浏览:135次
GCC4.2.4编译时提示 warning: operation on 'b' may be undefined
C/C++ code
#include <stdio.h>
int main()
{
int a,b,c,d;
a=7,b=7;
a=(a++);
b=(++b);
printf("a=%d,b=%d\n",a,b);
c=a++;
d=++b;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
return 0;
}
cc -Wall test.c -0 test 提示如下: test.c: In function 'main': test.c:6: warning: operation on 'a' may be undefined test.c:7: warning: operation on 'b' may be undefined 虽然没有报错,但是有个warning,还是不舒服。但是自己看了看,没找到如何修正这个warning。 但是这个在VC6.0环境下是可以通过的。 请教在gcc下如何修正warning呢? 谢谢:)
子表达式 i++ 有一个副作用 --- 它会改变 i 的值 --- 由于 i 在同一表达式的其它地方被引用, 这会导致无定义的结果, 无从判断该引用(左边的 a[i] 中)是旧值还是新值。(注意, 尽管 在 K&R 中建议这类表达式的行为不确定, 但 C 标准却强烈声明它是无 定义的, 参见问题 11.32。 参考资料: [K&R1, Sec. 2.12]; [K&R2, Sec. 2.12]; [ISO, Sec. 6.3]; [H&S, Sec. 7.12 pp. 227-9]。