算语句运行次数的问题?

for(int i=0;i<n;i++)//n+1次
{
}
为什么for这里执行了n+1次?
每次判断i<n 这个判断语句执行了n+1次
那i++呢 i++不是进行了n次吗
int i=0也有一次 为什么不是2*(n+1)次

movl $0,-0x1000(%rbp) /* i /
movl $10,-0xffc(%rbp) /
n */

movl $0,-0x1000(%rbp) /* i / i=0 这里执行1次
jmp .Lmain_400
.Lmain_500:
nop
addl $1,-0x1000(%rbp) /
i / i++ 执行n次
.Lmain_400:
movl -0x1000(%rbp),%eax /
i /
cmpl -0xffc(%rbp),%eax /
n */ if(i<n) 执行n+1次 因为还要加上失败的那一次
jl .Lmain_500

i++和for循环体内都是执行n次,i<n由于多了最后一次判断所以是n+1次,i=0是for开始前的初始定义语句,只会执行一次