变量意外变化

时间:2014-12-11 18:40:59

标签: c

我正在学习C并编写一个程序来计算阶乘。当我打印变量的值时,它显示为" 1111111111"。我检查并在初始化时它是" 1"。我认为它可能是溢出但问题是我不知道它为什么会发生。对于第一次迭代,prev_num变量应该读为" 1"。

#include <stdio.h>

int main(void)
{
    int prev_num = 1;
    int n = 0;

    for (n=1; n<=10; n++)
        printf("%i", prev_num);
        prev_num = prev_num * n;

    return 0;
}

2 个答案:

答案 0 :(得分:2)

您忘记了for循环的括号:

 for (n=1; n<=10; n++) {
        printf("%i\n", prev_num);
        prev_num = prev_num * n;
 }

此外,添加换行符以列出彼此之下的数字。

答案 1 :(得分:1)

这是计算机查看程序的方式:

int main(void)
{
    int prev_num = 1;
    int n = 0;

    for (n=1; n<=10; n++)        // The loop runs 10 times
    {
        printf("%i", prev_num);  // Every time, print the value "1"
    }

    prev_num = prev_num * n;     // This line is NOT part of the loop!

    return 0;
}

缩进一行不会使其成为循环的一部分 仅将{ }放在一组语句周围使其成为循环的一部分。
当没有括号时,循环下面只有一行将成为循环的一部分。