07/10/25 02:01:37
int a = -1;
unsigned int b = a;
こうするとbは標準Cならどんな環境でもUINT_MAXになるんですが
unsigned int b = (unsigned int)a;
こうした場合って、このキャストは
(1)aのビットパターンを無理やり unsigned int として解釈するのか (C++のreinterpret_cast)
→負数の表現が2の補数なら UINT_MAX
1の補数なら UINT_MAX-1
絶対値と符号フラグなら…いくつだ?
(2)aをunsigned int に変換するのか (C++のstatic_cast)
→環境によらず UINT_MAX
どっちでしょうか?
あいにく手元には負数の表現方法が2の補数の環境しかないので、確かめられません