2016-06-12 37 views
0

我在閱讀C++的基礎知識以瞭解基本原理。我想知道爲什麼當我將更長的字符串輸入到被定義爲比輸入字符串短的字符數組中時,爲什麼我的C++程序打印出完整的字符串。將較長的字符串通過cin函數放到較短的字符數組中

#include <iostream> 

int main() 
{ 
    using namespace std; 
    const int Size = 2; 
    char carr[Size]; 

    cin >> carr; 
    cout << carr << endl; 
} 

當我輸入「ABCDE」的方案,我輸出整個字符串「abcde」即使字符數組卡爾的長度只有2

這是如何工作的?

+3

它*發生*似乎工作。 – MikeCAT

回答

0

當您將「long」字符串輸入到「short」char[]中時,您正在寫入尚未分配的內存。這在C [++]中有未定義的行爲,並且它在某些情況下也可能工作,它也可能會因分段錯誤而崩潰。