c++的下标问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:18:48
我发现如果定义一个数组A[N] 但是下标为A[N]仍然可以使用 而且没有出错 比如我的冒泡排序 请高手指教:这样做有没有问题,还有下标为0的冒泡排序怎么排
我的循环是
for(i=1;i<=n-1;i++)
for(j=1;j<=n-i;j++)
if (a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}
这样做可以排序 而且答案也正确

for(int i=0;i<=n-1;i++)
for(int j=0;j<=n-i;j++)
if (a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;}
把i,j初始化为0,
这样改就可以了

没有出错??
那只是编译器不会报错而已
事实上肯定会出逻辑错误的
C/C++不检查数组是否越界,这也是许多溢出漏洞的根源
写0下标的把起始位改成0就行了

编译器是死的,人是活的.

不要相信编译器为你所做出的所有判断.
这样明显的越界问题....

越是越界了,这个程序可以排序吗,我觉得可以不太对.