我想为我的有限状态机编写调试日志打印功能,打印当前状态,时间以毫秒为单位,然后是我的消息。但是,我得到随机结果。这就是我所做的:
DEBUG_PRINT("SETUP", "%d %d %d %d", 1, 2, 3, 4);
当我跑步时:
[ SETUP] 0: 1 2 3 4
我希望得到:[ SETUP] 0: 0 1 2 3
但我得到:DEBUG_PRINT1("%d %d %d %d", 1, 2, 3, 4);
添加一个额外的%d将得到“4”,但我仍然得到一个假的0。
我之前的首张日志宏:1 2 3 4
打印出预期的while($s < $count_staff){
if ($temp_staff[$s]['isLoanOfficer'] == true) {
echo "<option value=" . $temp_staff[$s]['id'] . ">" . $temp_staff[$s]['displayName'] . " </option>";
}
$s++;
}
。
你能帮助我摆脱额外的0吗?
答案 0 :(得分:4)
问题是millis()
函数返回unsigned long
,其中标识符是%d
整数。
将其更改为%7ld
,它应该可以正常工作。
我已经测试过了。
编辑1:
我也在linux系统上测试过它。在linux系统中,这不是问题,因为linux int
的大小是4个字节而long
是8个字节。
然而,在Arduino上,int
的大小为2个字节,long
为4个字节。这会搞砸Arduino上的%d
标识符,并将unsigned long
从millis()
扩展到下一个%d