#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
//First type of output
//cout << a << endl << b << endl;
//Second type of output
cout << "A: " << a << endl << "B: " << b << endl;
return 0;
}
仅是简单的输入和输出,对于输入,如果仅输入“ a”,则将输出第一种类型 0 6422368
当输入相同时,第二个输出将输出 答:0 B:-2
任何人都可以解释原因吗?
答案 0 :(得分:3)
这就是所谓的未定义行为。
当您输入字符'a'时,实际上应该是整数。该字符“ a”保留在流上,以供任何其他输入操作读取。同时,两个变量int a, b;
都保持未初始化状态,使用未初始化的变量始终会导致未定义的行为。您得到的输出是未定义行为的示例。
答案 1 :(得分:3)
从在线cpp reference on Uninitialized variables:
可以创建没有值的变量。这是非常危险的,但是在某些情况下可以提高效率。 要创建没有初始值的变量,只需不包含初始值:
// This creates an uninitialized int
int i;
未初始化变量中的值可以是任何值–不可预测,并且每次运行程序时都可能不同。读取未初始化变量的值是未定义的行为-这始终是一个坏主意。必须先使用一个值对其进行初始化,然后才能使用它。
#include <iostream>
int main()
{
int i; // uninitialized variable
// WARNING: This causes undefined behaviour!
std::cout << i << '\n';
i = 23; // initializing the variable
// Now it is safe to use.
std::cout << i << '\n';
return 0;
}
上面示例中第一行上显示的值可以是任何值。