gpt4 book ai didi

c - 这两个 FOR 循环有什么区别?

转载 作者:行者123 更新时间:2023-11-30 18:19:12 24 4
gpt4 key购买 nike

我正在学习 C,并在我正在阅读的书中看到了下面列出的第一个循环。我很好奇两者之间有什么区别,因为我习惯使用第二个,即使它们返回不同的结果,也无法找出区别。

for(i = 0; i < 10; ++i){}

for(i = 0; i <= 10; i++){}

最佳答案

第一个迭代到 9,第二个迭代到 10。仅此而已。

前后递增操作没有区别。

为两个版本生成的未优化代码:

    for(int i = 0; i < 10; ++i)
00E517AE mov dword ptr [i],0
00E517B5 jmp wmain+30h (0E517C0h)
00E517B7 mov eax,dword ptr [i]
00E517BA add eax,1
00E517BD mov dword ptr [i],eax
00E517C0 cmp dword ptr [i],0Ah
00E517C4 jge wmain+53h (0E517E3h)
{
}

for(int i = 0; i <= 10; i++)
00E517E3 mov dword ptr [i],0
00E517EA jmp wmain+65h (0E517F5h)
00E517EC mov eax,dword ptr [i]
00E517EF add eax,1
00E517F2 mov dword ptr [i],eax
00E517F5 cmp dword ptr [i],0Ah
00E517F9 jg wmain+88h (0E51818h)
{
}

因此,即使在这里,也不会有性能损失。 i++++i 慢的事实是不正确的(至少在这种情况下,它没有什么区别)。对于 int y = i++ 来说,它会更慢,但在这种情况下,两者会做不同的事情,但这里的情况并非如此。性能问题在 20 年前的编译器上可能是存在的,但现在不再是了。

关于c - 这两个 FOR 循环有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12366606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com