for循环和while循环使用时名称for和while颠倒后的结果

    在一次编程时误将for写成了while,运行时没报警告(害人),但是结果不对,因此此处整理一下for和while循环的区别加深对着两个循环的理解,此分析价值不大,只是写出来帮助自己在写和调试代码时也许有用:
        

while (i=0, i<CMD_NUM, i++) //没报警告,能运行,但结果错误
       
            printf("iii=%d.\n",i);//while时此句不执行
        {
            printf("ii=%d.\n",i);//while时此句不执行
            if(!strcmp(str, g_cmdset[i]))//while时此句不执行
            {
                //如果相等,则说明用户输入的命令在命令集中找到了,就去执行这个命令所对应的动作即可
                printf("您输入的命令是:%s,是合法的\n", str);
                
                break; //如果不加此命令,找到后还要继续循环,直至i=3时才停止循环,它的                            //作用是停止循环并跳出此for循环,接着去执行下面的语句.  如果加了
                          //break,当找到了命令后,i的值就是当前的值.注意:如果没加break,
                          //当找到命令后,循环还会继续,直至for循环的条件不满足即i=3即                                    //i=
CMD_NUM时,才跳出循环。
                          //这个i=3的值将影响下面的语句.
                          

 

 

 

 


            }
            
        }
        printf("i=%d.\n",i);//while时此句不执行
        printf("CMD_NUM=%d.\n",CMD_NUM);//while时此句不执行
        if(i >= CMD_NUM)
      
        {
            //说明找遍了命令集中也没有找到用户输入的这个命令
            printf("%s不是一个合法命令,请重新输入:\n", str);
                
        }
      执行结果:

aston#led
ii=1.
i=1.
CMD_NUM=3.
aston#


  for (i=0, i<CMD_NUM, i++) //没报警告,能运行,但结果错误
       
            printf("iii=%d.\n",i);//把这句当成了假循环体,连续执行3次,i=0,1,2后再执行i++

                                         //即i=3时,不满足条件,退出所谓的假循环体后执行下面的

                                         //语句。
        {
            printf("ii=%d.\n",i);//i=3
            if(!strcmp(str, g_cmdset[i]))//执行此句是条件不成立,跳出循环
            {
                //如果相等,则说明用户输入的命令在命令集中找到了,就去执行这个命令所对应的动作即可
                printf("您输入的命令是:%s,是合法的\n", str);
                
                break; 
            }
            
        }
        printf("i=%d.\n",i);//i=3
        printf("CMD_NUM=%d.\n",CMD_NUM);//CMD_NUM=3
        if(i >= CMD_NUM)   //因为i=3,CMD_NUM=3满足条件,执行循环体
      
        {
            //说明找遍了命令集中也没有找到用户输入的这个命令
            printf("%s不是一个合法命令,请重新输入:\n", str);
                
        }

执行结果:

aston#lcd
iii=0.
iii=1.
iii=2.
ii=3.
i=3.

 

while循环:条件在小括号()内,初始化在while循环前,循环次数在循环体中。满足条件直接执行循环体中代码,不执行循环体和while之间的代码。上述的代码循环只执行一次,因为条件: (i=0, i<CMD_NUM, i++)运行后i都是1.

for循环:条件、控制变量的初始化、循环次数都在小括号()中,如果在for和大括号{}之间有代码时,要注意程序会把这部分代码当成假循环体了去连续执行,直至条件不满足后,才跳出循环,特别记住此时的循环次数是不满足条件的情况下的i值即CMD_NUM,

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值