只打印一次(状态改变时)
为了防止日志一直打印输出,只在状态改变时打印一次
#include<iostream> int main() { ///////////////////////////////////////// 对于两种状态切换情况 { bool m_bOnline = true; //默认在线 bool m_bFlag1 = true; //默认都是“开” bool m_bFlag2 = true; //按一定周期监测m_bOnline状态,执行如下代码段 { if (m_bOnline) { if (m_bFlag1) { m_bFlag1 = false; //关闭自己,打开其他 m_bFlag2 = true; std::cout << "在线" << std::endl; } } else { if (m_bFlag2) { m_bFlag1 = true; m_bFlag2 = false; //关闭自己,打开其他 std::cout << "掉线" << std::endl; } } } } ///////////////////////////////////////// 对于三种状态切换情况 { int m_nCondition = 0; //0\1\2三种状态,默认状态1 bool m_bFlag1 = true; bool m_bFlag2 = true; bool m_bFlag3 = true; //按一定周期监测m_nCondition状态,执行如下代码段 { if (m_nCondition == 0) { if (m_bFlag1) { m_bFlag1 = false; //关闭自己,打开其他两个 m_bFlag2 = true; m_bFlag3 = true; std::cout << "状态1" << std::endl; } } else if (m_nCondition == 1) { if (m_bFlag2) { m_bFlag1 = true; m_bFlag2 = false; //关闭自己,打开其他两个 m_bFlag3 = true; std::cout << "状态2" << std::endl; } } else if (m_nCondition == 2) { if (m_bFlag3) { m_bFlag1 = true; m_bFlag2 = true; m_bFlag3 = false; //关闭自己,打开其他两个 std::cout << "状态3" << std::endl; } } } } }
也可以使用如下方法:
有“开关”思维,那么可以让“位”当“开关”
int main() { ///////////////////////////////////////// 对于两种状态切换情况 { bool m_bOnline = true; //默认在线 char m_nFlag = 0x3; //11,只关注低2位。默认都是“开” //按一定周期监测m_bOnline状态,执行如下代码段 { if (m_bOnline) { if (m_nFlag & 0x1 == 1) { m_nFlag = 0x2; //10,关闭自己,打开其他 std::cout << "在线" << std::endl; } } else { if ((m_nFlag >> 1) & 0x1 == 1) { m_nFlag = 0x1; //01,关闭自己,打开其他 std::cout << "掉线" << std::endl; } } } } ///////////////////////////////////////// 对于三种状态切换情况 { int m_nCondition = 0; //0\1\2三种状态,默认状态1 char m_nFlag = 0x7; //111,只关注低3位。默认都是“开” //按一定周期监测m_nCondition状态,执行如下代码段 { if (m_nCondition == 0) { if (m_nFlag & 0x1 == 1) { m_nFlag = 0x6; //110,关闭自己,打开其他两个 std::cout << "状态1" << std::endl; } } else if (m_nCondition == 1) { if ((m_nFlag >> 1) & 0x1 == 1) { m_nFlag = 0x5; //101,关闭自己,打开其他两个 std::cout << "状态2" << std::endl; } } else if (m_nCondition == 2) { if ((m_nFlag >> 2) & 0x1 == 1) { m_nFlag = 0x3; //011,关闭自己,打开其他两个 std::cout << "状态3" << std::endl; } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-05-25 【转载】vs设置qt应用程序logo