Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
使用余数运算符,在不使用条件的情况下向前迭代循环缓冲区很容易......
iterator = (iterator + 1) % buffer_size;
我一生都无法弄清楚反向操作,向后迭代。
对你有用iterator = (iterator + buffer_size - 1) % buffer_size吗?走一圈比一圈少一圈。
iterator = (iterator + buffer_size - 1) % buffer_size
Borealid的答案有效。(注意:iterator最初设置为 0)。
iterator
另一种解决方案是
iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size最初 设置iterator为。buffer_size
iterator = buffer_size - 1 - (buffer_size - iterator) % buffer_size
buffer_size