二维数组首地址可以是负值吗?

2019-03-24 19:38发布

代码如下:  当i=0时,会调用DSPUP(&zuozhe[i-1][32],1).  难道此时为:DSPUP(&zuozhe[-1][32],1)?   /***************************左屏显示信息*********************************/
void fun40()
{       for(i=0;i<4;i++)
       {
       SetPage(0);
       SetColumn(i<<4);                           // i<<4  0行0列
       DspUp(&zuozhe[i-1][32],1);       SetPage(1);
       SetColumn(i<<4);                          // i<<4
       DspDown(&zuozhe[i-1][32],1);
       
       SetPage(2);
       SetColumn(i<<4);                           // i<<4
       DspUp(&wangshengwen[i-1][32],1);        SetPage(3);
       SetColumn(i<<4);                          // i<<4
       DspDown(&wangshengwen[i-1][32],1);
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Li_Lei
1楼-- · 2019-03-25 03:29
和数据类型的定义有关,i=0如果uint8 :i-1=255,sint8 :i-1=-1(255),uint16:i-1=65535
有无符号与计算无关,数据8位或16位就不一样了
djdhn
2楼-- · 2019-03-25 04:46
看不懂耶
jishuaihu
3楼-- · 2019-03-25 04:52
定义好了一个8位或者16位的变量以后,任何运算都是可以的,只不过他的范围就定了,比如8位的只能是0-255。此外一个数组定义完了他的范围也就定了,比如a[3][2];
在这样的情况下,i=0的时候i-1仍然可以计算,结果是255,但a[255][0]却超出了范围,因此是不行的,当然如果你的数组长度达到了255就没有问题了。
yanse51
4楼-- · 2019-03-25 10:32
 精彩回答 2  元偷偷看……

一周热门 更多>