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运作C语言的一点差异

 

在VC++6.0上的运行结果:

VC++6.0与VS2008运作C语言的一点差异

 

没有报错。

总结如下:

在vs2008下,变量未赋初值,直接编译,不报错。运行时报错。

在VC++6.0下,变量未赋初值,直接编译,不报错。运行时不报错。

 

看来,使用高版本的IDE还是可以提高编程效率的。

 

 

1楼pochioly昨天 17:13
其实访问未初始化变量这种行为是个未定义行为,n未定义行为在标准中的规定是编译器自己决定怎么做,也就是说夸张点说这个行为的结果为硬盘格式化都是可以的。nn这里完全是VC2008编译器自己做的,行为的结果是运行时检测没初始化变量(以及弹出错误提示)。