C++ C++;模算子圆阵
我试图在圆形阵列中实现“环绕”效果。当我把一个项目推到前面时,我希望它存储在减少的位置。当我推到前面时,我在尝试这样的事情:C++ C++;模算子圆阵,c++,modulus,C++,Modulus,我试图在圆形阵列中实现“环绕”效果。当我把一个项目推到前面时,我希望它存储在减少的位置。当我推到前面时,我在尝试这样的事情: items[front] = ch; front = (front - 1) % capacity; 但这并不像我预期的那样。Front从0开始,当第二行执行时,Front变为-1。在第二行执行后,front不应该变成6吗?我的数据结构教科书似乎是这样认为的。 < P>这就是C++中代码%/COD>的工作原理。要获得想要的效果,请尝试以下操作: front = (fr
items[front] = ch;
front = (front - 1) % capacity;
但这并不像我预期的那样。Front从0开始,当第二行执行时,Front变为-1。在第二行执行后,front不应该变成6吗?我的数据结构教科书似乎是这样认为的。 < P>这就是C++中代码<>%/COD>的工作原理。要获得想要的效果,请尝试以下操作:
front = (front + capacity - 1) % capacity;
你能给我们更多的上下文代码吗?前面的数据类型是什么?
capacity
的值是多少?如果front
不是无符号的类型,那么这种行为是完全正常的。特别是C++11之前,请注意front是一个int。我想我只是没有意识到模数是如何工作的…front=(front>0?front:capacity)-1代码>对我来说听起来更好。另外,如果front
是unsigned
类型,则OP的操作也应该正确。