VC++6.0与VS2008运作C语言的一点差异
VC++6.0与VS2008运行C语言的一点差异
此贴虽短,但是这个问题困扰了一位C语言程序员一天。
看代码:
#include <stdlib.h> #include <stdio.h> main() { int a; a*=1; printf("%d",a); }
在vs2008上的运行结果:
在VC++6.0上的运行结果:
没有报错。
总结如下:
在vs2008下,变量未赋初值,直接编译,不报错。运行时报错。
在VC++6.0下,变量未赋初值,直接编译,不报错。运行时不报错。
看来,使用高版本的IDE还是可以提高编程效率的。
- 1楼pochioly昨天 17:13
- 其实访问未初始化变量这种行为是个未定义行为,n未定义行为在标准中的规定是编译器自己决定怎么做,也就是说夸张点说这个行为的结果为硬盘格式化都是可以的。nn这里完全是VC2008编译器自己做的,行为的结果是运行时检测没初始化变量(以及弹出错误提示)。