簡體   English   中英

以下cpp程序的output如何證明合理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM