c语言 int a,b=65536;a=b;printf("%d",a) 为什么得0啊

如题所述

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-28
如果int是两字节、即16位的话,65536超出了两字节能表示的范围,其低16位为全0,所以为0
第2个回答  2017-12-28
不得0,得65535啊。追问

题少写了 c语言 long int b=65536;

追答

那也是65536啊。