c语言中unsigned int 和 int之间怎么进行转化???麻烦详细解释下面的题目!谢谢~
main(){unsigneda=32768;printf("a=%d",a);答案是-32768我已经运行过了,麻烦解释下过程~...
main()
{unsigned a=32768;
printf("a=%d",a);
答案是 -32768 我已经运行过了,麻烦解释下过程~ 展开
{unsigned a=32768;
printf("a=%d",a);
答案是 -32768 我已经运行过了,麻烦解释下过程~ 展开
2个回答
展开全部
TC中整型变量int占2个字节,可表示-32768到+32767这个闭区间范围的整数,unsigned int也占2个字节,可表示0到+65535这个闭区间范围的整数,
当把一个unsigned int(无符号整数)赋值为32768时,其内存的二进制形式为
1000000000000000,这个二进制编码也是int(有符号整数)型整数-32768的二进制补码形式,当你按“%d”(十进制有符号数格式)输出时,当然显示为-32768了,你应该用“%u”(无符号数格式)输出。
正确的用法是:
main()
{unsigned a=32768;
printf("a=%u",a);
当把一个unsigned int(无符号整数)赋值为32768时,其内存的二进制形式为
1000000000000000,这个二进制编码也是int(有符号整数)型整数-32768的二进制补码形式,当你按“%d”(十进制有符号数格式)输出时,当然显示为-32768了,你应该用“%u”(无符号数格式)输出。
正确的用法是:
main()
{unsigned a=32768;
printf("a=%u",a);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询