在下面的代码中,我将0xffffffff
乘以unsigned int
(32位),并将其存储在unsigned long long
(64位)中。为什么我没有得到8589934588
的实际输出。相反,我得到4294967294
。 在此先感谢。 OUTPUT: SIZEOF i = 4的 的sizeof J = 8 2xi = 4294967292unsigned int(32bit)为无符号long long(64bit)
/* Code starts here */
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
unsigned int i=4294967294;
unsigned long long j=i*2;
printf("Sizeof i=%d\n", sizeof(i));
printf("Sizeof J=%d\n", sizeof(j));
printf("2xi=%llu\n", j);
return 0;
}
请记住'signed overflow'是未定义的行为,但是无符号的溢出只是包装。 –