C:简单代码无法按预期工作(PIC micro)

时间:2011-06-26 13:49:42

标签: c pic microchip

此行未按预期运行:

uartPushPos = (uartPushPos + 1) % UART_TX_BUFF_LENGTH;

然而,这在理论上也是如此,确实有效:

//if (uartPushPos == UART_TX_BUFF_LENGTH - 1){
if (uartPushPos >= UART_TX_BUFF_LENGTH - 1){
    uartPushPos = 0;
} else {
    uartPushPos++;
}

UartPopPos是char类型,UART_TX_BUFF_LENGTH是预处理器变量,设置为16。

为什么第二个代码段有效,但不是第一个?

如果它有很大的不同,我正在为PIC单片机16f使用SourceBoost BoostC编译器。

由于

1 个答案:

答案 0 :(得分:4)

如果uartPushPos小于0,或者大于或等于UART_TX_BUFF_LENGTH,则它们会有所不同。

另见Mod of negative number is melting my brain