您观察到的是缓冲区溢出的一本书示例。用户输入不适合缓冲区,您会将垃圾写入堆栈中的其他一些变量。 C ++标准说这是UB(未定义的行为),因此可能会发生很多事情。
char a[4];
cin >> a;
char b[3];
cin >> b;
cout << a << "\n";
cout << b;
输入:印度封锁给我输出:kdown锁定
同时对char数组进行硬编码时>]
char a[]= "india" char b[]= "winner" cout << a <<" " << b;
给我预期的结果您能解释一下意外结果的原因吗?谢谢
字符a [4]; cin >> a;字符b [3]; cin >> b; cout << a <
您观察到的是缓冲区溢出的一本书示例。用户输入不适合缓冲区,您会将垃圾写入堆栈中的其他一些变量。 C ++标准说这是UB(未定义的行为),因此可能会发生很多事情。
在第二个示例中,将自动选择数组的大小以适合字符串(包括空字符终止符)。
您观察到的是缓冲区溢出的一本书示例。用户输入不适合缓冲区,您会将垃圾写入堆栈中的其他一些变量。 C ++标准说这是UB(未定义的行为),因此可能会发生很多事情。