难怪题目要特意提醒,为什么最后的结果是负的?

图片说明
图片说明

/*2,0,1,9*/
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
    int i = 1;
    long sum = 0;
    for (i = 1; i <= 2019; i++)
    {
        int m = i;
        while (m > 0)
        {
            int t = m % 10;
            if (t == 2 || t == 0 || t == 1 || t == 9)
            {
                sum += (i * i);
                cout << setw(5) << i;
                break;
            }
            m /= 10;
        }

    }
    cout << endl<<endl;
    cout << sum;
    return 0;
}

你的编译器是32bit的吧,long溢出了
我用64bit运行,输出 2658417853