關於在“for迴圈外部定義表示式1”和“在for括號裡定義表示式1”
阿新 • • 發佈:2022-05-09
for迴圈的表示式如下:
for(i=0;i<10;i++){
/*程式碼*/
}
也可以將表示式定義在for外部:
#include <stdio.h>
int main(void)
{
int i=0;//定義表示式1
for(;i<10;i++){
/*程式碼*/
}
return 0;
}
這兩種定義的位置不同,執行完i的結果一樣為10,但是當在巢狀for情況下,會有些不同。
當巢狀for的定義在for括號:
#include <stdio.h> #include <string.h> int main(void) { int i,j; char num1[10]; char num2[10]; scanf("%s",num1); scanf("%s",num2); for(i=0;i<strlen(num1);i++){ for(j=0;j<strlen(num2);j++){ printf("%c,%c\n",num1[i],num2[j]); } printf("------%c\n",num1[i]); } return 0; }
分別輸入123和123456,
結果如下:
也就是當內層迴圈完後,退出內層迴圈,i=,0,j=6,然後外層接著迴圈,i=1,再次進入內層迴圈,這時內層迴圈的 j 重新變為0,第二個字串繼續從下標為0的元素開始遍歷。
當將表示式1定義在for迴圈的外部:
#include <stdio.h> #include <string.h> int main(void) { int i=0,j=0; char num1[10]; char num2[10]; scanf("%s",num1); scanf("%s",num2); for(;i<strlen(num1);i++){ for(;j<strlen(num2);j++){ printf("%c,%c\n",num1[i],num2[j]); } printf("------%c\n",num1[i]); } return 0; }
輸入123和123456,得到結果為:
當第一次內層迴圈完退出後,i=0,j=6,當外層for繼續迴圈,i=1,j仍然等於6,且因為j 不滿足表示式2,則不再進入內層迴圈,只是繼續著外層的迴圈。