为什么我的变量从1变为2然后又变回1?

0 c++ ifstream ofstream gettickcount

我一直在创建一个空闲程序,以便在鼠标和键盘处于非活动状态时在几分钟内计算.这是我到目前为止:

using namespace std;

while(true)
{
    GetLastInputInfo(&last_info);
    tickCount = GetTickCount();
    int minutes = (tickCount - last_info.dwTime) / 60000;
    count++;

    if((minutes >= 1) && (count%3000==0))
    {
        ifstream in("in.txt");
        ofstream out("out.txt");
        float sum;
        in >> sum;
        sum = sum++;
        out << sum;
        out << in.rdbuf();
        out.close();
        in.close();
    }
    std::cout << "Idle Time: " << minutes << " minutes." << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)

当我运行它闲置一分钟时,"总和"表示它是1,然后我关闭程序并再次打开它一分钟,"总和"说它是2.我关闭程序并再打开一分钟它又回到了1.为什么会发生这种情况?

Ada*_*eld 5

这一行是未定义的行为:

sum = sum++;
Run Code Online (Sandbox Code Playgroud)

您不能在序列点之间多次修改变量.你应该写这个来增加sum变量:

sum++;
Run Code Online (Sandbox Code Playgroud)

  • 大声笑,我会提到它,但后来我看到我也在我的帖子中忽略了它.*捂脸* (2认同)