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++ 的工作方式,您不能在函数之外拥有可执行代码。当第一个块编译时,编译器会像这样查看程序:
- 好的,是时候开始这个程序了!让我们看看
main()
- 好的,打印
"Enter something! \n"
- 现在等待用户输入并将其存储在
y
- 好了,
main()
就完成了,没有其他功能了……估计程序结束了!
- 外面
main()
没有什么可担心的,所以我完成了。
第二个块的问题是编译器只到达第 2 步。然后它会这样想:
- 好了,
main()
完成了
- 除了
main()
有什么需要注意的吗?
- 哦,这看起来像一个新的类型声明。但事实并非如此。
- 报错!
如果您正在参加 class 或自学 C++,您将在稍后的学习中遇到结构和 classes,这些将使这更有意义。它们是编译器 尝试 将其解释为的语法类型的示例。
在第一段代码中,编译器没有报错。另一方面,第二个代码块给出了错误 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++ 的工作方式,您不能在函数之外拥有可执行代码。当第一个块编译时,编译器会像这样查看程序:
- 好的,是时候开始这个程序了!让我们看看
main()
- 好的,打印
"Enter something! \n"
- 现在等待用户输入并将其存储在
y
- 好了,
main()
就完成了,没有其他功能了……估计程序结束了! - 外面
main()
没有什么可担心的,所以我完成了。
第二个块的问题是编译器只到达第 2 步。然后它会这样想:
- 好了,
main()
完成了 - 除了
main()
有什么需要注意的吗? - 哦,这看起来像一个新的类型声明。但事实并非如此。
- 报错!
如果您正在参加 class 或自学 C++,您将在稍后的学习中遇到结构和 classes,这些将使这更有意义。它们是编译器 尝试 将其解释为的语法类型的示例。