gpt4 book ai didi

c++ - “pow”未在此范围内声明

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:07:33 24 4
gpt4 key购买 nike

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
int e=0;
int b=0;
cout<<"Enter Exponent";
cin>>e;
cout<<"Enter Base";
cin>>b;
pow(e, b);
cout<<"Power:"<<e;
return 0;
}

void pow(int e, int b)
{
int t=1;
while(b==t)
{
e=e*b;
t++;
}
}

这是我收到的错误:

ulaga.cpp|29|error: 'pow' was not declared in this scope

谁能解释为什么会出现这个错误?

最佳答案

C++ 编译器按顺序依次解析您的代码文件。即第 1 行然后第 2 行然后第 3 行......等等。所以当编译器来到函数调用语句时 pow(e, b); 在你的 main() 函数,还没有达到函数的定义void pow(int e, int b) main() 下方 函数,因此给你错误。有两种方法可以解决这个问题。

1) 移动的定义void pow(int e, int b) (以及您计划从 main() 调用的任何其他函数)在 main() 之上 函数本身。这样,编译器在到达 pow(e, b); 之前就已经解析并知道您的函数了。 行在您的 main() .

2) 另一种方法是使用前向声明。这意味着添加行 void pow(int e, int b); main() 之前 功能。这告诉编译器前向声明(在本例中为 void pow(int e, int b) )给出的函数在此代码文件中定义,但可以在文件中函数的定义代码之前调用。这是一种更好的方法,因为您的文件中可能有多个函数以不同的顺序相互调用,并且可能不容易重新排列它们的定义以在文件中调用它们之前出现。这是关于 Forward Declaration 的好读物

您可能还想通过对函数的引用来传递参数以获得正确的结果。即使用 void pow(int& e, int& b) 。这将导致您的 pow() 中的值被修改 实际应用于整数的函数 eb而不仅仅是在 pow() 之后将被丢弃的拷贝 执行完毕。这link关于在函数中通过引用传递参数很好地解释了这一点。

关于c++ - “pow”未在此范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11016189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com