符号なしタイプ unsigned と符号付きタイプ signed
符号付き型は 0、正の数、負の数を表すことができますが、符号なし型は 0 以上の数値のみを表すことができます。
型変換
型が表現できる値の範囲によって変換プロセスが決まります
- 符号なし型が表す範囲外にある値を符号なし型に代入すると、結果は、符号なし型によって表される値の合計数を割った初期値の剰余になります。
unsigned u = 10;
int i = -42;
//u+i,相加前首先把整数-43转换成无符号数(把负数转换成无符号数类似于直接给无符号数赋一个负值)
//因为int是32位,因此它能表示数值总数位2^32,所以-42转换为无符号数=(-42+2^32)=4294967254
// 4294967254+19=4294967264 即输出结果
cout<<u+i<<endl;
unsigned u1 = 42, u2 = 10;
cout<<u1-u2<<endl;
cout<<u2-u1<<endl;
エラーケース
// 由于无符号数永远不会小于0,因此这是个死循环
for(unsigned i = 10;i>=0;i--)
cout<<i<<endl;