这些代码行:
long duration;
duration = (long)(500*g_sampleTimeInSeconds) / 60;
printf("Memory will fill up after %d minutes\n", duration);
当 g_sampleTimeInSeconds 大于 65 时会产生负数。当 g_sampleTimeInSeconds = 65 时,打印的数字是 541,但当它是 66 时,打印的数字是 -542 而不是正确的 550。当 g_sampleTimeInSeconds 替换为硬编码值。
此代码使用 XC8 编译器编译,可在 Microchip PIC 上运行
更新:
g_sampleTimeInSeconds 是一个 16 位整数