1. 程式人生 > 其它 >關於在“for迴圈外部定義表示式1”和“在for括號裡定義表示式1”

關於在“for迴圈外部定義表示式1”和“在for括號裡定義表示式1”

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,則不再進入內層迴圈,只是繼續著外層的迴圈。