注意奇怪的相同計數器巢狀迴圈

這不是你將在其他程式設計環境中看到的內容。幾年前我遇到過它,我無法理解為什麼會發生這種情況,但是在使用 MATLAB 一段時間之後,我能夠弄明白。請檢視下面的程式碼段:

for x = 1:10
    for x = 1:10
        fprintf('%d,', x);
    end
    fprintf('\n');
end

你不會期望這個工作正常,但確實如此,產生以下輸出:

1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,

原因在於,與 MATLAB 中的其他內容一樣,x 計數器也是一個精確的矩陣 - 向量。因此,x 僅是對陣列(連貫的,連續的儲存器結構)的引用,其適當地引用每個後續迴圈(巢狀或不巢狀)。巢狀迴圈使用相同識別符號的事實對於引用該陣列的值沒有區別。唯一的問題是在巢狀迴圈中外部 x 被巢狀(本地)x 隱藏,因此無法引用。但是,巢狀迴圈結構的功能保持不變。