[英]How is the output for the following cpp program justified
char a[4];
cin >> a;
char b[3];
cin >> b;
cout << a << "\n";
cout << b;
输入:印度锁定给我 output:kdown 锁定
同时对 char 数组进行硬编码,例如
char a[]= "india"
char b[]= "winner"
cout << a <<" " << b;
给了我预期的结果,你能解释一下意外结果的原因吗....谢谢
您观察到的是缓冲区溢出的书籍示例。 用户输入不适合缓冲区,并且您将垃圾写入堆栈上的其他一些变量。 C++ 标准说这是 UB(未定义的行为),所以可能会发生很多事情。
在您的第二个示例中,自动选择 arrays 的大小以适合字符串(包括空字符终止符)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.