//SECTION I:
void main()
{
char str[5] = "12345"; //---a)
char str[5] = "1234"; //---b)
cout<<"String is: "<<str<<endl;
}
Output: a) Error: Array bounds Overflow.
b) 1234
//SECTION II:
void main()
{
char str[5];
cout<<"Enter String: ";
cin>>str;
cout<<"String is: "<<str<<endl;
}
我尝试了许多不同的输入字符串,令我惊讶的是,我得到了奇怪的结果:
案例一:输入字符串:1234,输出:1234(没问题,因为这是预期的行为)
案例二:输入字符串:12345,输出:12345(编译器没有报告错误,但我期待一个错误:数组边界溢出。)
案例三:输入字符串:123456,输出:123456(编译器没有报告错误,但我期待一个错误:数组边界溢出。)
..................................................................
..................................................................
案例六:输入字符串:123456789,输出:123456789(错误:未处理的异常。访问冲突。)
我的疑问是,当我在 SECTION I 中分配的字符数超过其容量时,编译器会报告错误:数组边界溢出。
但是,当我在第 II 部分尝试同样的事情时,我没有收到任何错误。为什么会这样??请注意:我在 Visual Studio 上执行了这个