一个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门徒 你也看看吧 很明显你也不知道 - -
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