剰余はってんというか、暗黙型キャスト基礎というか

先日、-10%3は-1というのを書きましたが、これ、符号付の時しか成り立たないです(まぁ当然といえば当然ですけど)。左側の項が、何らかの式になっていて、その中に1つでも符号無しの値があると、暗黙でその項が符号無しになってしまいます。そして結果的には、解明しにくいバグが混入してしまいます。

size_t width = v.size();
int a = ( width + x - ox ) % width;   // 結果が負にならない
int b = static_cast< int >( width + x - ox ) % width; // 結果が負になる

参考:http://www9.plala.or.jp/sgwr-t/detail/TypeConversion.html