的C++入门的说:在类型文字,无符号负数
我们可以独立指定signedees和整体 文字的大小。如果后缀包含U,则文字具有无符号的 类型,因此具有U后缀的十进制,八进制或十六进制文字具有最小类型的无符号整数 ,无符号长整型或无符号长整型 ,其中文字的值符合
当一个声明
int i = -12U;
方式我明白它是-12转化成unsigned
版本的本身(4294967284
),然后分配给int
,由于翻滚而产生非常大的正数。
这似乎没有发生。请问我错过了什么?
cout << i << endl; // -12
没错。所以-12U变成4294967284,那么应该把4294967284分配给一个int。这不是它发生的情况吗? – JAM 2012-08-18 16:46:07
4294967284太大而无法放入int,因此它回绕到负值。 – 2012-08-18 16:46:47
哦,我明白了,有道理。谢谢Vaughn! – JAM 2012-08-18 16:47:23