注意奇怪的相同计数器嵌套循环

这不是你将在其他编程环境中看到的内容。几年前我遇到过它,我无法理解为什么会发生这种情况,但是在使用 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 隐藏,因此无法引用。但是,嵌套循环结构的功能保持不变。