为何嵌套循环输出起始为8和18?修改条件后变为2和2的原因
关于C#嵌套循环输出起始值的困惑解答
嘿,我来帮你理清这个疑惑~ 其实这不是代码逻辑出了问题,而是控制台输出的显示限制在搞鬼,咱们一步步说:
1. 原代码的实际执行逻辑
先明确你写的嵌套循环的真实行为:
- 外层循环的
i从2开始,每次递增1,直到i等于99(因为条件是i < 100) - 每一个
i值,内层循环的j都会完整从2跑到99,所以代码执行的第一行输出绝对是i = 2 and j = 2,之后依次是i=2,j=3、i=2,j=4……直到i=2,j=99,然后才会进入i=3的循环。
2. 为什么你看到的起始是8和18?
这是因为你的原代码会输出98×98=9604行内容,而绝大多数控制台(比如Windows的命令提示符、Visual Studio的输出窗口)默认只会保留最近的几百行输出,更早的内容会被挤出缓冲区,你在控制台里能看到的只是最后显示的那一小部分,自然不是真正的开头。
3. 改成i < 10 and j < 10后起始变成2和2的原因
当你把循环条件改小后,循环只会输出8×8=64行内容,这个数量完全在控制台的显示范围内,所有输出都能被保留,所以你能看到最开头的i=2 and j=2。
验证方法
如果想确认原代码的起始输出确实是2和2,可以加个计数判断,只输出前几行:
class Program { static void Main(string[] args) { int outputCount = 0; for (int i = 2; i < 100; i++) { for (int j = 2; j < 100; j++) { if (outputCount < 5) // 只打印前5行 Console.WriteLine("i = {0} and j = {1}", i, j); outputCount++; } } } }
运行这段代码,你就能清楚看到开头的输出内容啦。
内容的提问来源于stack exchange,提问作者Voidsower
相关产品推荐
相关产品推荐

