for多重迴圈的執行順序是先執行內部迴圈,再執行外部迴圈
透過對程式碼進行等價轉換,按照上述原理即可知道程式碼的執行順序
對於上面程式碼:
for(i=0;i<8;i++)for(j=0;j<10;j++)scanf("%d,%d",&i,&j);
它等價於下面
for(i=0;i<8;i++){ for(j=0;j<10;j++){ scanf("%d,%d",&i,&j); }}
從上面可以看出,每執行完一次j迴圈,i的值才增加1
但是注意,該程式碼有一個陷阱:scanf函式會改變i和j的值
實際執行順序會受使用者輸入的i、j值的不同而不同
對於下面的程式碼
for(i=0;i<8;) min_m(i++)=ifor(j=0;j<8;j++)
它等價於下面的程式碼:
for(i=0;i<8;){ min_m(i++)=i}for(j=0;j<8;j++){}
會先執行min_m函式8次 然後再執行j迴圈
注意,該程式碼有一個問題,就是min_m函式的返回值必須是一個左值。
這意味著某些變數的值發生了更改,可能會影響到迴圈。
for多重迴圈的執行順序是先執行內部迴圈,再執行外部迴圈
透過對程式碼進行等價轉換,按照上述原理即可知道程式碼的執行順序
對於上面程式碼:
for(i=0;i<8;i++)for(j=0;j<10;j++)scanf("%d,%d",&i,&j);
它等價於下面
for(i=0;i<8;i++){ for(j=0;j<10;j++){ scanf("%d,%d",&i,&j); }}
從上面可以看出,每執行完一次j迴圈,i的值才增加1
但是注意,該程式碼有一個陷阱:scanf函式會改變i和j的值
實際執行順序會受使用者輸入的i、j值的不同而不同
對於下面的程式碼
for(i=0;i<8;) min_m(i++)=ifor(j=0;j<8;j++)
它等價於下面的程式碼:
for(i=0;i<8;){ min_m(i++)=i}for(j=0;j<8;j++){}
會先執行min_m函式8次 然後再執行j迴圈
注意,該程式碼有一個問題,就是min_m函式的返回值必須是一個左值。
這意味著某些變數的值發生了更改,可能會影響到迴圈。