同一个程序,为什么用命令行、VC编译的结果会不同?

程序代码如下:#include<iostream.h>intfunc1();intfunc2();intmain(){func1();cout<<func2()<<end... 程序代码如下:
#include <iostream.h>

int func1();
int func2();

int main() {
func1();
cout << func2() << endl;

return 0;
}

int func1() {
int n = 12345;
return n;
}

int func2() {
int m;
return m;
}

这是命令行的结果:12345

这是VC的结果:-858993460

求大神解释?
展开
 我来答
HarryNR
2013-11-18 · TA获得超过929个赞
知道小有建树答主
回答量:1013
采纳率:33%
帮助的人:798万
展开全部
呵呵,只能说各种编译器都有优缺点了。。。
能出现这种情况,应该只有2种原因吧;
1、func1()返回的值没有内存接受,可能直接放在了内存的下一个地址上了;
因为func2没初始化,而且也是int型,g++就正好打出那个数了。
2、g++编译运行时或许使用堆栈实现函数调用,这两个函数分配的内存是一样的。vc的话,不同函数在内存中分配的是不同的地址,程序运行时,直接采用段内查找的方式找函数的。

另外,c++的话不要使用.h的方式,g++是纯c++编译器,对于.h的写法是会给警告的;还有就是函数2没有赋初始值,在后续的vs编译器中都对这种情况加入了警告;
int func2()
{
int m=0;
return m;
}
写法要规范,编译器设计的时候多少有缺陷的,但是造成这种问题的最根本原因,还是写的代码不规范。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式