合肥市双墩镇最新规划:关于C++中 return的问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 04:56:49
int
pow(int val ,int exp)
{
for(int res=1;exp>0;--exp)
res=res*val;
return res;
system("PAUSE");
}

#include<iostream>
extern int pow(int,int);
using namespace std;
int main()
{int val=2;
int exp=15;
cout <<"the powers of 2\n";
for(int cnt=0;cnt<=exp;++cnt)
cout<<cnt<<":"
<<pow(val,cnt)<<endl;
return 0;
system("PAUSE");
}
在dev c++中是这个结果:
E:\dev-c\Dev-Cpp\未命名3.cpp In function `int pow(int, int)':
7 E:\dev-c\Dev-Cpp\未命名3.cpp name lookup of `res' changed for new ISO `for' scoping
在visual c++中是这个结果:
.\YT.cpp(7) : error C2065: 'res' : undeclared identifier

请教一下为什么会出这样的问题?

res是在for的范围内声明的,不是pow函数体这个级别的变量,应该写成:

int pow(int val ,int exp)
{
int res;
for(res=1;exp>0;--exp)
res=res*val;
return res;
}

你在循环中定义了res
res的生命周期是在这个循环里 出了循环就不能用了
所以当你调用 return res的时候 res已经被销毁了
你可以这样定义
int res=1;
for(;exp>0;--exp)
res=res*val;

for(int res=1;exp>0;--exp)
res=res*val;

你在循环中定义了res
res的生命周期是在这个循环里 出了循环就不能用了
所以当你调用 return res的时候 res已经被销毁了
你可以这样定义
int res=1;
for(;exp>0;--exp)
res=res*val;