初学者,十位阶乘内存爆满

#include "stdio.h"
#include "stdlib.h"

int main() {
    int Sum = 0, item;
    int i;
    for(item = 1; item <= 10; item++)
    {
        for(i = 1; i <= 10; i++)
        item = item*i;
        Sum = Sum+item;
    }
    printf("%d", Sum);
    return 0;
}

在mooc上看到代码,内存占用就很小,希望能指出代码深层的区别

#include "stdio.h"
#include "stdlib.h"

int main() {
    int Sum = 0, item;
    int i, j;
    for(j = 1; j <= 10; j++)
    {
        item = 1;
        for(i = 1; i <= 10; i++)
        item = item*i;
        Sum = Sum+item;
    }
    printf("%d", Sum);
    return 0;
}

谢谢

item是循环变量啊,不能在内层循环中不断修改的

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7578901
  • 这篇博客你也可以参考下:解决中国大学MOOC遮挡字幕问题
  • 除此之外, 这篇博客: C语言学习笔记_MOOC浙大翁恺中的 1.1 计算机和编程语言 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 程序的执行

    解释:借助一个程序,那个程序能试图理解你的程序,然后按照你的要求执行。

    编译:借助一个程序,就像一个翻译,把你的程序翻译成计算机真正能懂的语言——机器语言——写的程序,然后,这个机器语言写的程序就能直接执行了。

程序都不对
应该写

#include "stdio.h"
#include "stdlib.h"
 
int main() {
    int Sum = 0, item = 1;
    int j;
    for(j = 1; j <= 10; j++)
    {
        item = item*j;
        Sum = Sum+item;
    }
    printf("%d", Sum);
    return 0;
}