
#include<stdio.h> main() {unsigned int a=65535; printf("a=%d\n",a); } 运算结果 a=-1
#include<stdio.h>main(){unsignedinta=65535;printf("a=%d\n",a);}运算结果a=-1为什么是等于-1呢?...
#include<stdio.h>
main()
{unsigned int a=65535;
printf("a=%d\n",a);
}
运算结果
a=-1
为什么是等于-1呢? 展开
main()
{unsigned int a=65535;
printf("a=%d\n",a);
}
运算结果
a=-1
为什么是等于-1呢? 展开
1个回答
展开全部
隐式转换。
这段程序假设unsigned int占2个字节,16位。
具体分析如下:
无符号数65535即二进制1111 1111 1111 1111,所有位都是数值位。
而输出时,并没有对a进行修改,而是将1111 1111 1111 1111(65535),当作有符号数时,最高位被具体看作符号位了,所对应的有符号数就是-1,应该将printf中的%d改成%u即可,。
这段程序假设unsigned int占2个字节,16位。
具体分析如下:
无符号数65535即二进制1111 1111 1111 1111,所有位都是数值位。
而输出时,并没有对a进行修改,而是将1111 1111 1111 1111(65535),当作有符号数时,最高位被具体看作符号位了,所对应的有符号数就是-1,应该将printf中的%d改成%u即可,。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询