【发布时间】:2013-07-17 06:38:46
【问题描述】:
#include <stdio.h>
#include <cs50.h>
int main(void)
{
int n;
printf("Please give me an integer greater than zero!\n");
n=GetInt();
if(n<0)
{
printf("You are giving me a bad value!\n");
return 1;
}
for(int i=n-1;i<n;n--)
printf("%d\n",n);
return 0;
}
如果用户输入n 的数字,我想知道为什么循环不会无穷大。假设用户为n 输入了 40; i 不会一直是 n-1,所以 39 和 n 是 40,然后 i 变成 38,而 n 变成 39 等等 - 那不会造成无限循环吗?
【问题讨论】:
-
为什么“当n变成39时我变成38”?
-
i仅在循环的第一次迭代中小于n。之后n递减,现在等于i。 -
鳄鱼猎人的风格...“这不是无限循环。那是无限循环。”试想一下,我刚刚在第二句之前拔出了
while(1)。 -
您似乎认为
i=n-1在每次迭代中都会发生。但它只发生在第一次。