当我们声明 cin 为 int 并从 cin 中获取输入并在 cout 中打印 cin 时会发生什么?
What will happen when we declare cin as int and take input from cin with print cin in cout?
#include <iostream>
using namespace std;
int main() {
int cin;
cin >> cin;
cout << "cin is : " << cin;
}
在此代码中,它在不同的编译器中获得不同的输出,并且找不到适当的解决方案。
有两件事你可能不明白:作用域和初始化。
在下面的代码中,全局变量
v
被局部变量隐藏v
在main
中声明。main
中的所有操作都在main
的v
上执行。cin
也是如此.在main
中声明的cin
与在命名空间中声明cin
std
不同。因此,cin >> cin;
具有不同的含义。您可能期望与std::cin >> cin;
相同的行为。double v; int main() { int v; }
- C++ 允许未初始化的变量。当你写入时
int cin;
内存空间是为cin
分配的,但没有写入任何内容(变量不会自动初始化)。让变量保持未初始化可能是有意的,也可能不是故意的。编译器可能设置为对未初始化的变量发出警告和/或在运行时进行检查。如果在调试配置中编译,则变量可能会自动设置为零,具体取决于编译器,但您不应依赖此变量,因为最终版本将发布。
您的问题"垃圾值,错误,分段错误,未打印任何内容">的答案是垃圾值(这是面试问题吗?
cin
是一个局部整数变量,并且cin >> cin
不同于std::cin >> cin
,也不同于cin >>= cin
。
您的代码调用未定义的行为。(查一下这个术语,这是一个重要的概念,使C++成为一种不可靠的编程语言。
在行int cin
中,定义一个变量,但不初始化它。
一旦您从未初始化的cin
变量中读取,就会发生未定义的行为。
下一个未定义的行为发生取决于cin
的值。右移运算符是一种算术运算。如果其右侧不在 0 和左侧操作数的位大小之间,则行为未定义。
不能为变量名称声明关键字 name。 CIN 和 COUT 是 C++ 中的关键字。请为c ++程序中使用的变量名称使用不同的名称。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- C++中的cin.ignore()函数不适用于整个流
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- :CIN 不断打印用户在每次循环后输入的内容
- 当我们声明 cin 为 int 并从 cin 中获取输入并在 cout 中打印 cin 时会发生什么?
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 使用CIN和COUT时,字符变量无法正确打印
- 使用 getline(cin,n) 输入;没有打印第一个输入,我没有使用 CIN >> 在任何地方输入
- 如果 cin 在字符串之前包含整数,则出现打印错误
- Cin.getline 无法正确打印也无法正常工作
- 为什么 std::cin 无法打印并导致错误?
- cout/cin 不读取或打印