- int jinzhi (int numb, int flag)
- {
- //1.这个i,一开始没指定所以i=0
- int nA[100], i;
-
- //2-1.如果你代入的numb=0,不进入回圈,i还是0
- //2-2.numb!=0,进入for回圈不管有没有达到sif (nA[i ] >= 10),i都会>0,因为i++
- for (i = 0; numb != 0; i ++)
- {
- nA[ i ] = numb % flag;//nA[0]=0;nA[1]=1;n[2]=0;nA[3]=1
- if (nA[i ] >= 10)
- switch (nA[i ])
- {
- case 10: nA[i ] = 'A'; break;
- case 11: nA[i ] = 'B'; break;
- case 12: nA[i ] = 'C'; break;
- case 13: nA[i ] = 'D'; break;
- case 14: nA[i ] = 'E'; break;
- case 15: nA[i ] = 'F'; break;
- }
- numb = numb / flag;
- }
-
- //3.执行到这里i已经是符合 >=0的条件了,所以一定会进入while回圈,不加i--,那就会一直在回圈里面不出来,陷入无穷回圈
- while (i >= 0)
- {
- if (nA[i ] >= 'A' && nA[i ] <= 'F')
- printf ("%c", nA[i ]);
- else
- printf ("%d", nA[i ]);
- // printf ("i2=%d\n",i );
- i--;
- //printf ("i3=%d\n",i );
- }
- printf ("\n");
-
- //4.结论:i++是i=i+1的意思,反之i--就是i=i-1,所以加上i--,i会慢慢递减变成负数,(i >= 0)才会等于false,才会离开回圈
-
- return 0;
- }
复制代码
不知道这样解释有没有为你解惑? |