>>176
エラーにはなりません。警告の出るコンパイラはあるようですが。

>>177
なるほど。それで決まりますね。
つまり -1u は unsigned int で UINT_MAX - 1 + 1 (== UINT_MAX) ということに。

unsigned int 以外の(より精度の高い)型に変換した場合に
ソースコードから期待される値は得られなさそうですので、
結局はやるべきではないですね。

ありがとうございました。