为什么这个模数算子给我带来麻烦?

时间:2012-07-12 05:54:08

标签: c modulus

这是一个简单的C计算。当FilterIndex等于FilterDepth时,上面的第一个不会翻转。换句话说,FilterDepth为15,filterIndex变为15,一旦cpu执行此操作,它应该为0,但它变为16,后来变为1,从不为0.

如果我将逻辑分成两部分,它就可以了。我在这里错过了什么?

filterIndex = ((filterIndex++) % FilterDepth) ;

VS。

filterIndex++;
filterIndex=filterIndex % FilterDepth;

1 个答案:

答案 0 :(得分:2)

这是C中未定义的行为,因此它的行为可以是任何东西 您正在尝试modify a value more than one time between sequence points