这是一个简单的C计算。当FilterIndex等于FilterDepth时,上面的第一个不会翻转。换句话说,FilterDepth为15,filterIndex变为15,一旦cpu执行此操作,它应该为0,但它变为16,后来变为1,从不为0.
如果我将逻辑分成两部分,它就可以了。我在这里错过了什么?
filterIndex = ((filterIndex++) % FilterDepth) ;
VS。
filterIndex++;
filterIndex=filterIndex % FilterDepth;
答案 0 :(得分:2)
这是C中未定义的行为,因此它的行为可以是任何东西 您正在尝试modify a value more than one time between sequence points。