您的位置首页生活小窍门

c语言中for()与for();有什么不同

c语言中for()与for();有什么不同

对于问题1 我们只讨论循环: 开始 for (i=0; i<2; i++) i=0 往下执行 for(j=0; j<2; j++) j=0往下执行 for(k=0; k<2; k++) k=0 往下执行 printf(“%d %d %d\n", i, j, k); 输出 i j k 显然输出的是 0 0 0 输出后枯携执行 k++, k值变为1 与2比较 显然 k<2 继续执行 输出 此时 i=0 j=0 k=1 输出为 0 0 1 输出后执行 k++, k值变为2 与2比较 显然 2<2 为假,跳出k循环回到上一级循环执行 j++ j=1与2比较 显然1<2 往下执行(此时i=0 , j=1)再次执行k循环int k=0 将k值重新赋值为0 执行输出 此时 i=0 j=1 k=0 输出 0 1 0 执行输出后k++,k值为1与2比较 显然1<2 继续 k的循环 此时k=2,j=1 i=0 执行输出为 0 1 1 输出后k++ ,k值为2与2比较 2<2为假跳出k循环 返回j循环 返回时k=2,j=1 i=0 执行j++ ,j的值为 2显然 2<2为假 ,跳出j循环 返回i循环 此时k=2,j=2 i=0, 执行i++,i值为1 与2比较 显然1<2 往下执行 i=1,执行 j 循环 int j=0 j值变为0 j=0 向下执行 k循环 int jk=0 k值变为0 k=0 向下执行输出 此时 i=1 j=0 k=0 输出 1 0 0 (此时回到了i=0的开始情况 ) 参照前面的分析继续执行 依次会 输出 1 0 1 1 1 0 1 1 1 当输出到 1 1 1 的 时候继续想下执行k++,k值变为2 与2比较 结果为假回到j循环此时 i=1,j=1 ,k=2 ;执行j 循环中的j++,j值为2与2比较 结果为假回到i循环此时 i=1,j=2 ,k=2 ;执行i 循环中的i++,i值为2与2比较 结果为假退出循环 此时i=2,j=2 ,k=2;退出循环后下下执行结束程序 对于问题2 while(1)就是条件为永真 你用while(3) while(2) 都可以 就是while()函数的语句不停的执行 ,此时只能用跳转或者break 语句来跳出循环 但是while(0)表示永假 即while()里面的不执行 当然do while()除外 它是先执行后判断,但是也仅仅执行席次就不在执野瞎行了for(;;)里面空的意思就是条件为永真,没有退出的判别条件也就是相当于while(1)(习惯用 1 0 表示真假) 当然也可以用break或者跳转退出循环,但是那和for(;;)的判断无关。 所以for(;;)简单的讲就是条件为永真 循环不断的执行 除非遇到函数内部的跳转 或没脊伏者函数里面嵌套的判断退出为止 eg : 1> int i=0; int j=0; for(;;) {i++; j++ ;} //不停的死循环 2>int i=0; int j=0; for(;;) {i++; j++ ; if(i>10)break; } 不停的循环直到i>10由内部判断退出循环 对于问题3 你只要将 1维理解 和for语句的一维理解透彻 再在此基础上扩展就行了 多维数组可以分解为多个一维数组的 多个for的嵌套同样可以分解为一个一个的循环 只要很清晰的知道 数组下标 与判断时候条件值的状态 就好分析了 对于初学者来数 数组画图分析 以表格的形式在纸上分析,而循环语句同样的将判断的条件分解来 在纸上模拟,一步一步的跟进状态 从简单的开始慢慢深入 ,不怕麻烦 仔细研究很如意理解的.