这两个延时相差多少呢?

blackbeer   2010-6-15 13:55 楼主
void delay()
{
  uint i;
  for(i=0;i<200;i++);
}

void delay()
{
  char i;
  for(i=0;i<200;i++);
}

回复评论 (10)

int i;
char i;
只是长度不同,如果是32位机,则int i的延迟时间会短些。
如果是8位机,则char i的延迟时间会短些
点赞  2010-6-15 17:43
支持1楼的
点赞  2010-6-15 17:51
如果是32位机,应该会很接近,甚至是相同的...变量i该是在寄存器里面的.

如果是8位机,int i那个可能会长几倍.
点赞  2010-6-15 19:36
有符号char型最大数才是127,所以第二个就是一个死循环,无限延时
点赞  2010-6-15 21:10
嗯.....确实是,char 类型永远无法增量到200......
点赞  2010-6-15 23:08

  1. void delay()
  2. {
  3.   uint i;
  4.   for(i=0;i<200;i++);
  5. }

  6. void delay()
  7. {
  8.   unsigned char i;
  9.   for(i=0;i<200;i++);
  10. }

延时要看晶振是多高频率的。
还有这种延时不是精准的,楼主最好在所用的硬件平台上用一下。
点赞  2010-6-16 00:00
实测一下看是多少。
点赞  2010-6-16 00:00
呵呵,楼主是有意搞个char,而非uchar。是有意坑人的?呵呵
点赞  2010-6-16 23:06
如果是32位机,应该会很接近,甚至是相同的...变量i该是在寄存器里面的.

如果是8位机,int i那个可能会长几倍.  的确实是,char 类型永远无法增量到200......     
点赞  2010-6-17 10:46
楼主没弄清楚
点赞  2010-6-18 15:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复