int main()
{
clrscr();
int x[3];
int n;
cout<<"Enter the array size= ";
cin>>n;
cout<<"Enter the elements for array= ";
for(int i=0;i<n;i++)
{
cin>>x[i] ;
}
for(i=0;i<n;i++)
{
cout<<"x["<<i<<"]="<<x[i]<<"\n";
}
getch();
return 0;
}
当我在c#中尝试相同的逻辑时,我得到了正确的输出,好像我输入的数组大于我初始化它给出了异常。但是在c ++中,在编译时和运行时都没有出现任何类型的错误。但是根据规则,如果我给出的数组大小超过初始化,那么它应该在输出的运行时给出一些错误。还有一点,为什么它将09确定为两个不单独为90的麻木,它在不同的指数和输出中显示0和9。
答案 0 :(得分:4)
如果您有阵列:
char array[3];
你试图写入一个不存在的元素:
array[15] = '!';
然后此 错误。但是,C ++标准不要求编译器诊断此错误,大多数情况下不需要。这是因为每次访问数组时都需要计算 来确定你是否在数组范围内。
相反,由程序员确保他/她正确地使用数组,通过编写这些边界检查他或她自己。然后只在程序员认为有必要时执行检查,并且没有浪费的计算。
所以:
std::cin >> n;
if (n > 3)
throw std::runtime_error("OMG not enough space in my array!");
答案 1 :(得分:0)