C++入門書によると:
署名者と整数リテラルのサイズを個別に指定できます。接尾辞にUが含まれている場合、リテラルはunsignedタイプであるため、U接尾辞を持つ10進数、8進数、または16進数のリテラルは、リテラルの値が適合するunsigned int、unsigned long、またはunsignedlonglongの最小タイプになります。
宣言するとき
int i = -12U;
私が理解しているように、-12はunsigned
それ自体のバージョン(4294967284
)に変換されてから、に割り当てられ、int
ロールオーバーのために結果が非常に大きな正の数になります。
これは起こらないようです。何が足りないのですか?
cout << i << endl; // -12