我向 ChatGPT 和 Google Bard 询问了一个 C++ 问题:“哪些函数可以访问与它们出现在同一文件中的全局变量?”
他们回答说“声明全局变量的同一文件中的任何函数都可以访问该全局变量。全局变量具有程序级作用域,这意味着可以从同一程序(文件)内的程序的任何部分访问它们。无论函数是在全局变量声明之前还是之后定义的,它仍然可以访问和修改该变量。”
我期望可以访问在声明全局变量之前定义的函数中的全局变量,但我无法访问它。 IDE 抛出错误,“错误:'x' 未在此范围内声明 cin >> x;"
ChatGPT 和 Google Bard 是否回答错误或者我的代码还有其他问题?
我的代码:
#include <iostream>
using namespace std;
int myFun()
{
return x*2;
}
int x;
int main() {
cout << "Enter value in global variable: ";
cin >> x;
cout << myFun();
return 0;
}
<source>: In function 'int myFun()':
<source>:5:12: error: 'x' was not declared in this scope
5 | return x*2;
| ^
仅此而已。 gcc 是正确的。在声明之前您无法访问 x
。 C++ 代码从上到下进行解析(模板除外)。您的代码中没有其他错误。聊天机器人可以为您提供帮助,但它们无法教您语言如何工作。不要依赖他们所说的来获取知识。