for循环1:
 语句点灯;
 for(i=0;i<100000;i++)
 {}
语句关灯;语句1到语句2之间的for循环有意义吗?会被直接解释为:
语句点灯;
语句关灯;
吗?
条件判断没有实际意义只是会在编译的时候有用,真正的可执行程序是不会管这句判断的。因为它不是语句。
我这样理解对吗?for循环2
 语句点灯;
 for(i=0;i<100000;i++)
 {;}
语句关灯;会被直接解释为:
语句点灯;
nop;
nop;
.
.
.
.
(100000)nop;
语句关灯;
吗?for循环3
语句点灯;
    while(!j)
    for(i=0;i<100000;i++)
     {if(j)
      break;      }
语句关灯;
j的值有外部中断给赋值为1

解决方案 »

  1.   

    通过循环来延时用的,也就是循环那么多次使得CPU不会立刻去关灯,否则你根本看不到灯已经亮过了
      

  2.   

    for(i=0;i<100000;i++)
     {}
    通过这条语句来进行延时,编译后这条语句是有意义的。
    用汇编来解释的话,这条语句至少可以解析成:
    1条mov指令,
    100000条cmp指令,
    100000条inc指令;
    (由于有的指令有寄存器限制可能有更多条指令)
    所以执行的时候还是会占用一定时间,达到延时作用。
      

  3.   

    请问这样的循环是否对CPU有害呢?
      

  4.   

    无害,只要你机器起来,CPU都是在工作中,nop和其他op没有大的区别