永发信息网

数组的下标可以小于零吗?

答案:4  悬赏:70  手机版
解决时间 2021-02-18 02:48
//bounds.c--超出数组的边界
#include
#define SIZE 4
void main()
{
int valuel=44;
int arr[SIZE];
int value2=88;
int i;
printf("value1=%d,value2=%d\n",value1,value2);
for(i=-1;i arr[i]=2*i+1;
for(i=-1;i<7;i++)
printf("%2d%d\n",i,arr[i]);
printf("value1=%d,value2=%d\n",value1,value2);
}
结果:
value1=44,value2=88
-1 -1
0 1
1 3
2 5
3 7
4 9
5 6684216
6 4199081
数组的下标可以小于零吗?

有人说arr[-1]表示*(arr-1),也有人说是*(arr+0xffff),(0xffff是-1的补码表示形式),到底哪一个呢?
最佳答案
数组的下标是不可以小于0的

你的程序咋看起来好象是通过了,实际上arr[-1]已经越界了,指向了arr前一个内存单元去了。
全部回答
还满意回答,完全是无人子弟! 正解应该是楼主说的那个,表示0xfffff 如果你的那道题限定的内存足够大就可以AC,否则会给一个MLE; 特别是做标记功能的数组要小心这一点! 至于RE,在比赛的时候我们通常当成超过上界处理,即数组开小了。
你要知道在C语言里,数组基本等同于指针的,[]操作也可以用于任何像地址的东西,所以,下标可以是任何整数. 但是这样做的意义比较小,因为这样的结果是你不能控制的,你读取了定义以外的数据,那些东西可能属于其他数据,甚至系统数据,结果就是程序崩溃.当然不排除有目的的使用这一技巧达到某些特殊目的的程序,不过我还没见到过.....
可以
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
刘备的五虎将各活到多少岁死了?
黄羊十五社这个地址在什么地方,我要处理点事
辽宁省二本交通方面专业学校
有没有人知道诺贝丽斯(常州)人力资源的联系
骨瓷杯能放100度的开水吗
含铁和铜比较多的食物水果什么
(12分)阅读材料,回答问题。材料恩格斯认为
一品足轩地址在哪,我要去那里办事
红星眼镜我想知道这个在什么地方
魔域暗黑龙骑怎么看幻兽资质
用英语说雾霾的出现让人无法呼吸,导致疾病
三界庄坡在什么地方啊,我要过去处理事情
(安徽省合肥一中2009届高三教学质量检测,历
抗菌素对人体有无害处
河面幼儿园我想知道这个在什么地方
推荐资讯
求助GT2如何利用第三通道另插小舵机都进来谈
学能动力幼小衔接教育地址在什么地方,想过去
什么叫井田开拓方式,它包括哪些内容。井田开
七里河桥我想知道这个在什么地方
艾灸不是人人适用,来看看哪些疾病不能用艾灸
开淘宝店可以卖别人的东西吗?
90%以上的化脓性脑膜炎发生在A.生后1年以内B.
西游记续集为什么让徐少华和迟重瑞两个人都演
新桥乡计划生育服务站地址有知道的么?有点事
纹身讲究多,小腿部位纹什么合适
60岁的人算老吗?60岁的人身体机能会出现哪些
武夷岩茶返青怎么办?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?