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