为什么在不更新var而仅在启动var之后打印时使用?

时间:2019-06-20 03:25:40

标签: c++

我想编写一个代码以立即同步时钟并以时钟为目标,但是使用while时,该代码将打印与首次启动相同的时钟。

#include <iostream>
#include <string>
#include <sstream>
#include <ctime>
using namespace std;

int main(){
    time_t now = time(0);
    tm *ltm = localtime(&now);
        do{ 
        if(ltm->tm_sec > 60){
          cout << "ok : " << ltm->tm_sec << endl;
          break;
        } else {
          cout << "ok : " << ltm->tm_sec << endl;
          continue;
        }
    }while (ltm->tm_sec <= 60);
}

我希望它现在将打印新的时钟,但是它与开始代码时间时的打印相同。

1 个答案:

答案 0 :(得分:1)

您需要使用now循环中的当前时间来更新ltmdo-while变量。

您可以如下更改代码:

#include <iostream>
#include <string>
#include <sstream>
#include <ctime>
using namespace std;

int main()
{
    time_t now = time(0);
    tm *ltm;
    do
    {
           now = time(0);
           ltm = localtime(&now);
           if(ltm->tm_sec > 60)
           {
               cout << "ok : " << ltm->tm_sec << endl;
               break;
           }
           else
           {
                 cout << "ok : " << ltm->tm_sec << endl;
                 continue;
           }
      }while (ltm->tm_sec <= 60);
  return 0;
  }

我希望它能起作用!