此行未按预期运行:
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编译器。
由于
答案 0 :(得分:4)
如果uartPushPos
小于0,或者大于或等于UART_TX_BUFF_LENGTH
,则它们会有所不同。