为什么我的C程序在迭代变量达到2100时停止?

问题描述

我已经编写了一个简单的C代码,如下所示:

#include <stdio.h>

int main()
{
    long iteration = 0;
    
    while(1)
    {
        iteration += 10;
        
        if(iteration % 100000000 == 0)
        {
            printf("Iteration %ld\n",iteration / 1000000);
        }
    }

    return 0;
}

iteration达到2100时,程序停止(不打印任何内容)。 iteration似乎被编译器(GNU gcc)视为int,但我将其定义为long。有什么问题吗?

2100 * 1000000 = 2100000000(21亿),这是int溢出,但我的变量已定义为long

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)