int a,b=65536;a=b;printf("%d",a) 答案是多少 求解释 C

int a,b=65536;a=b;printf("%d",a) 答案是多少 求解释 C语言问题
2024-11-27 00:45:01
推荐回答(2个)
回答1:

int范围是由编译器决定的。
对于32位或64位编旦改译器, int范围为2^31-1, 所以这里会输出65536
对于16位编译器, int范围晌数是32767(2^15-1) 所模谨判以65536是溢出,
65536=0x10000; 世纪a=b=0;
输出0.

回答2:

a,b都是整型变量饥团瞎(十六位二进制数),65536超出了它们的范围,它的二进制值或雹是1后面十六个0,把烂空它存放到a或b里面就会产生溢出,于是只取后面的十六位数,也就是十六个0,故结果输出0