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

标签 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 微 Controller 16f 使用 SourceBoost BoostC 编译器。

谢谢

最佳答案

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

另请参阅Mod of negative number is melting my brain

关于C:简单代码未按预期工作(PIC micro),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484350/

相关文章:

在 C 程序中使用的 C++ DLL

c - 编写无阻塞connect()代码的理想方法是什么?

embedded - 设置 RXIF 标志时未调用 PIC32 SPI ISR?

pic - Microchip XC16 下的 malloc() 是否保证产生字对齐地址?

c - 老师提供的 x86_64 库与我的系统不兼容

c - 结构副本与成员副本(时间效率)

c - XC8 收到关于 plib I2C 函数的 "undefined symbols"错误

c - SPI通讯,如何正确设置时钟

c - 根据图片 18f4550 的位值发音颜色

c - C结构编译失败