C++ std::cin 无法在 main() 之外运行

C++ std::cin won't work out of main()

在第一段代码中,编译器没有报错。另一方面,第二个代码块给出了错误 error: 'cin' in namespace 'std' does not name a type

第一段代码:

#include <iostream>

int y;

int main(){
std::cout << "Enter something! \n";
std::cin >> y;
}

第二个代码块:

 #include <iostream>

 int y;

 int main(){
 std::cout << "Enter something! \n";

 }

 std::cin >> y;

是什么导致了这种行为?我可以修复它吗?

如果您需要更多详细信息,请随时在评论中提问。

你在 C\C++ 的基本语法上失败了。

std::cin >> y; 是一个语句。不允许在函数体之外使用语句,只能使用声明。编译器尝试将该行视为声明,声明中的第一个标记是类型说明符。因此,您确实会收到该错误消息。

按照 C++ 的工作方式,您不能在函数之外拥有可执行代码。当第一个块编译时,编译器会像这样查看程序:

  1. 好的,是时候开始这个程序了!让我们看看 main()
  2. 好的,打印 "Enter something! \n"
  3. 现在等待用户输入并将其存储在y
  4. 好了,main()就完成了,没有其他功能了……估计程序结束了!
  5. 外面main()没有什么可担心的,所以我完成了。

第二个块的问题是编译器只到达第 2 步。然后它会这样想:

  1. 好了,main()完成了
  2. 除了main()有什么需要注意的吗?
  3. 哦,这看起来像一个新的类型声明。但事实并非如此。
  4. 报错!

如果您正在参加 class 或自学 C++,您将在稍后的学习中遇到结构和 classes,这些将使这更有意义。它们是编译器 尝试 将其解释为的语法类型的示例。