intをunsignedintで除算しようとすると、予期しない結果が発生します。
int b;
unsigned int c;
int res;
float res_f;
b = -25;
c = 5;
res = b / c; // res = 858993454
res_f = b / c; // res_f = -5.000000
同じことが「+」、「-」、「*」でも問題なく機能しますが、「/」では失敗します。ここで恋しいのは何ですか?
PS
さまざまなコンパイラでテストされ、結果は同じでした。