一个c++例子

来源:百度知道 编辑:UC知道 时间:2024/09/21 17:44:10
#include<iostream>
using namespace std;
extern int pow(int,int);
int pow(int val,int exp)
{
for(int res=1;exp>20;--exp)
res=res*val;
return res;
}
int main(){
int val=2;
int exp=16;
cout<<"the powers of 2\n";

for(int cnt=0;cnt<=exp;++cnt)
cout<<cnt<<":"<<pow(val,cnt)<<endl;
system("pause");
return 0;
}

dev-c++编辑器

In function `int pow(int, int)':

name lookup of `res' changed for new ISO `for' scoping

using obsolete binding at `res'

我想知道为什么不能编译

我的分是用来学习的分少别嫌弃 谢谢
cpp门徒 你也看看吧 很明显你也不知道 - -

支持C++新标准的编译器会将res的作用范围限制在for循环体内部,即for循环执行结束后res将不复存在,所以最后将它作为函数的返回值是错误的。

此题没错。换个编译器试一下。
结果输出:
0:1
1:1
.
.
.
.
.
.
16:1