问一个单片机C语言的问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 02:31:45
1********************************************************
for(zhanc=2;zhanc>=0;zhanc--)
disbuf[zhanc+1]=disbuf[zhanc];

2*********************************************************
disbuf[3]=disbuf[2];
disbuf[2]=disbuf[1];
disbuf[1]=disbuf[0];
3********************************************************
zhanc=3;
while(zhanc--)
disbuf[zhanc+1]=disbuf[zhanc];
*******************************************************
我想实现第2段话的功能 数组交换,用第3段话可以实现,但是用第1段话就不行了。分析了下第1段和第3段功能应该是一样的把。但是就是不行。我用来做数码管拉幕显示。 请大家帮忙解答
补充;;我已经做出来了 改成这样
for(zhanc=3;zhanc>0;zhanc--)

disbuf[zhanc]=disbuf[zhanc-1];
难道 for语句的第二句 不能有等于0条件?
还是keil编译器的问题?

看你 zhanc 的定义是有符号数还是无符号数

一旦你定义 zhanc 为 unsigned 的. 那么 0-1=0xFF. 编译器会认为是 +255. 那么会做成一个死循环的 for 了 :-)

zhanc=0的时候第一句还会怎么做,继续减1??