Athletico
2020-06-09 15:57
采纳率: 72.7%
浏览 176

各位大佬帮看看我的问题呗,谢谢啦

问题是这样的:

我在一个函数中定义了一个静态局部变量:static int x=0;

然后对x的操作是:x++;

然后我利用对二进制文件的操作:

fstream iofile ("D:x的值",ios::in | ios::out | ios::binary);

iofile.write( (char*)&x,sizeof(x));

这样就把x的值存放在磁盘文件里了。

问题:在第一次运行程序后很明显可知x的值为1,若第一次运行完之后,我关闭程序之后,再次打开此程序,在x++之前通过操作:iofile.read( (char*)&x,sizeof(x));
得到x的值,此时x的值为 1 还是 0 呢?

由于我还不知道结果,我还想问问如果是0的话怎么样才能让 x 在第二次运行程序时为 1 呢?
这是我的大学计算机基础作业的一个关键点,想了好久没想出来,各位大佬帮看看吧,万分感谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • threenewbee 2020-06-09 16:32
    已采纳

    每次程序运行,变量都是重新来过的。
    static int x=0;
    此时是0
    x++是1
    然后读取
    iofile.read( (char*)&x,sizeof(x));
    那么文件里的x是多少,就是多少

    如果你希望每次都累加1,那么可以读取后,再++再write

    打赏 评论
  • qtchen_1988 2020-06-09 16:32

    是0,程序关闭了,内存就释放了。想要记住的话,简单的就是写到本地磁盘,启动时再读取就知道前一次运行这个程序时x最后的值了

    打赏 评论

相关推荐 更多相似问题