当我们将 cin 声明为 int 并在 cout 中使用 print cin 从 cin 获取输入时会发生什么?

德文德拉·贾达夫
#include <iostream>
using namespace std;
int main() {
    int cin;
    cin >> cin;
    cout << "cin is : " << cin;
}

在这段代码中,它在不同的编译器中得到不同的输出,并且找不到合适的解决方案。

zdf

有两件事你可能不明白:scopeinitialization

  1. 在全局变量下面的代码v隐藏的局部变量v宣布main在所有的操作main都在执行mainv对于 也是如此cincin您在其中声明main的与cinstd命名空间中声明的不同所以,cin >> cin;有不同的含义。您可能期望与std::cin >> cin;.

    double v;
    int main()
    {
      int v;
    }
    
  2. C++ 允许未初始化的变量。写入时int cin;为 分配了内存空间cin,但没有写入任何内容(该变量不会自动初始化)。保留未初始化的变量可能是有意的,也可能不是。您的编译器可能设置为警告未初始化的变量和/或在运行时检查。如果您在调试配置中编译,则变量可能会自动设置为零,具体取决于编译器,但您不应依赖于此,因为您的最终构建将在发布中。

你的问题“垃圾值,错误,分段错误,没有打印”的答案垃圾值(这是一个面试问题吗?):

  • cin 是一个局部整型变量并且
  • cin >> cin不同于std::cin >> cin和不同cin >>= cin

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章