c++ - 9 月 5 日之后每天执行一个 Action

标签 c++ winapi

我需要在9月5日以后每天执行一个 Action ,这个程序是我写的

#include <windows.h>

int main()
{
    SYSTEMTIME time;
    GetLocalTime(&time);

    if((time.wMonth = 9 && time.wDay >= 6) || time.wMonth > 9)
    {
        //perform action
        MessageBox(GetForegroundWindow(), "Action performed. Month is " + std::to_string((long long)wMonth), "Alarm!", MB_OK | MB_SYSTEMMODAL);
    }
}

我运行了这个程序并显示了消息框。但今天是 8 月 22 日,我检查了我电脑的时钟。我做错了什么?

引用 SYSTEMTIME

更新:
写完这个问题后,我检查了 wMonth 和 wDay 的值,它们是 1 和 22,即 Jan 22。 似乎是一个错误。我该怎么做才能获得正确的月份?

最佳答案

if((time.wMonth = 9 ... 需要:

if((time.wMonth == 9 ...
               ^^^^

如果你反转你的测试(许多 C++ 程序员都这样做),编译器会发出一个错误:

if((9 = time.wMonth ...  // error !

这是一种捕捉这种频繁打字错误的方法。

关于c++ - 9 月 5 日之后每天执行一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25441319/

相关文章:

c++ - 如何找到最大值和最小值?

c++ - 具有零大小数组的 std::swap() 的编译错误?

c++ - 查找重叠 1 位的计数

c++ - 串口通讯初始化

c++ - 一种使键盘事件队列既响应又不占用整个 CPU 能力的方法

.net - 使用 __declspec(thread) 的线程本地存储在 C++/CLI 中失败

winapi - 使用WSAEOPNOTSUPP的closesocket()失败

windows - 难道不能从线程 ID 获取句柄吗?

c++ - 应用程序如何在反汇编中处理 try catch 中的异常

c++ - Windows.h - 焦点进入文本输入时的通知