c语言小题 关于赋值时数据类型的转换的

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:50:13
以下程序输出的结果是 答案是0 解释怎么出来的

main()
{unsigned short a=65536;
int b;
printf("%d\n",b=a);
}

unsigned short 的上限是65535,所以65536已经溢出了,只保存了它的低16位,正好是全0.

short型变量占用2字节,取值范围是-32768~32767,将65536(二进制10000000000000000)赋值给short型后,高位溢出,低位只剩下0了