Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;模算子圆阵_C++_Modulus - Fatal编程技术网

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的操作也应该正确。