该行未按预期工作:
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 微 Controller 16f 使用 SourceBoost BoostC 编译器。
谢谢
最佳答案
如果uartPushPos
小于0,或者大于或等于UART_TX_BUFF_LENGTH
,则它们不同。
关于C:简单代码未按预期工作(PIC micro),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484350/