0

这是一个简单的 C 计算。当 FilterIndex 等于 FilterDepth 时,上面的第一个不会翻转。也就是说,FilterDepth是15,filterIndex变成15,一旦cpu执行了这个,应该是0,但是变成了16,后来变成了1,永远不会是0。

如果我将逻辑一分为二,它就可以工作。我在这里想念什么?

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

对比

filterIndex++;
filterIndex=filterIndex % FilterDepth;
4

1 回答 1

2

这是 C 中未定义的行为,因此它的行为可以是任何东西。
您正试图在序列点之间多次修改一个值

于 2012-07-12T05:55:50.230 回答