为什么这种情况总是如此?

Doc*_*dam 2 c embedded microcontroller pic

语言:C PIC:16F84A 程序:CCS PCW

当我编译下面的代码时,我的编译器抱怨FOR总是为真(也许int我不支持负值?):

#include <16F84A.h>
#FUSES XT
#use delay(clock=4M)
byte const display[10] = {63,6,91,79,102,109,124,7,127,103};

void main()
{
   set_tris_b(0);
   while(True)
   {
   int i;
      for(i=9;i>=0;--i)
      {
         output_b(display[i]);
         delay_ms(300);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

它的PIC倒计时项目,所以:9,8,7,6,5,4,3,2,1,0,9,8,7,6,5,4,3,2,1,0,9,8 ,7,6,......但它在第一个周期后停止.

Bad*_*heh 5

使用

    signed int i;
Run Code Online (Sandbox Code Playgroud)

代替

    int i;
Run Code Online (Sandbox Code Playgroud)

在CCS编译器中,默认情况下整数是无符号的.

http://www.ccsinfo.com/downloads/ccs_c_manual.pdf

检查第38页

"默认情况下,所有类型(浮动除外)都是无符号的;但是,[它们]可以在无符号或有符号之前.