C语言如何实现每隔X秒重复执行指定代码?
实现方案
要实现每隔40秒重复输出重拳,核心是用**模运算(取余)**计算当前时间在重复周期中的偏移,替换原有的单次区间判断逻辑即可。
修改后代码
{ real punch; real time = CURRENT_TIME; real tau = 40; // 重复出拳的间隔周期,单位秒 // 计算当前时间在当前周期内的偏移量 real cycle_offset = fmod(time, tau); // 每个周期的前1秒输出5kg重拳(可根据实际需要调整窗口长度) if (cycle_offset <= 1) { punch = 5; } else { punch = 0; } return punch; }
逻辑说明
- 用
fmod(浮点型取余函数)计算当前时间对周期tau取余的结果,得到的cycle_offset永远在[0, 40)区间内循环 - 原代码只判断了第一个周期的条件,修改后每个周期都会触发一次判断
- 示例中设置了1秒的出拳窗口,如果你需要出拳是瞬时触发,可以把判断条件改成
cycle_offset < 0.1或者更小的阈值,匹配你代码的时间精度 - 如果需要调整间隔周期,直接修改
tau的数值即可
内容的提问来源于stack exchange,提问作者thevictorso
相关产品推荐
相关产品推荐

