C中的简单for循环倒数计时器

Simple for-loop countdown timer in C

代码应该这样做:

“Lift off in T minus
5
4
3
2
1
Blast-off!”

当我 运行 它时,它会一直打印“'Sum = 5'”。

代码:

int main(void) {

int sum = 5;  
int i;     

printf("Lift off in T minus\n");

for (i = 0; i < 5; i=i+i) {
    sum = sum - i;  
    printf("sum = %d\n",sum);  
} 

printf("Blast-off",sum);  

return 0;
for (i = 0; i < 5; i=i+i) { // use i = i+1
    sum = sum - i;       //sum-- or sum = sum -1
    printf("sum = %d\n",sum);  
} 

因为最初 i=0,所以

i=i+i; //will be zero always, no increment.

sum = sum -1;

否则

i = 0  =>sum = sum - i;    // = 5 as i=0
i = 1  =>sum = sum - i;    // = 4 as i=1
i = 2  =>sum = sum - i;    // = 2 as i=2
i = 3  =>sum = sum - i;    // = -1 as i=3

为什么不 运行 向后循环?

for (i = 5; i > 0; --i) {
    printf("i = %d\n",i);  
}

这更简单,因此减少了错误潜入的可能性。此外,如果格式不正确,您的最终 printf:您缺少 sum.

的格式说明符

您的特定问题:将[=​​13=]替换为i=i+1或类似的东西。 (我更喜欢++i)。