#include <iostream>
using namespace std;
int main() {
int cin;
cin >> cin;
cout << "cin is : " << cin;
}
在这段代码中,它在不同的编译器中得到不同的输出,并且找不到合适的解决方案。
有两件事你可能不明白:scope和initialization。
在全局变量下面的代码v
是隐藏的局部变量v
宣布main
。在所有的操作main
都在执行main
的v
。对于 也是如此cin
。cin
您在其中声明main
的与cin
在std
命名空间中声明的不同。所以,cin >> cin;
有不同的含义。您可能期望与std::cin >> cin;
.
double v;
int main()
{
int v;
}
int cin;
为 分配了内存空间cin
,但没有写入任何内容(该变量不会自动初始化)。保留未初始化的变量可能是有意的,也可能不是。您的编译器可能设置为警告未初始化的变量和/或在运行时检查。如果您在调试配置中编译,则变量可能会自动设置为零,具体取决于编译器,但您不应依赖于此,因为您的最终构建将在发布中。你的问题“垃圾值,错误,分段错误,没有打印”的答案是垃圾值(这是一个面试问题吗?):
cin
是一个局部整型变量并且 cin >> cin
不同于std::cin >> cin
和不同cin >>= cin
。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句