读书人

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

发布时间: 2013-01-17 10:28:55 作者: rapoo

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编译器自己做的,行为的结果是运行时检测没初始化变量(以及弹出错误提示)。

读书人网 >VSTS

热点推荐