C语言的unsigned int到底是什么意思

为了搞清unsignedint到底是什么,我做了下面一个程序,把不同的数字打进去,看输出的不同效果:#include"stdio.h"main(){unsignedsho... 为了搞清unsigned int到底是什么,我做了下面一个程序,把不同的数字打进去,看输出的不同效果:

#include "stdio.h"
main()
{
unsigned short a=32768;
unsigned short b=32767;
unsigned short c=32769;
unsigned short d=-32768;
unsigned short e=-32767;
unsigned short f=-32769;
unsigned short g=-1;
unsigned short h=-2;
unsigned short i=-3;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n",a,b,c,d,e,f,g,h,i);
getch();
}

运行的结果如下:
32768
32767
32769
32768
32769
32767
65535
65534
65533

Press any key to continue

还是没有看出规律来,请会的朋友解释一下好吗?谢谢!
展开
 我来答
匿名用户
推荐于2017-11-26
展开全部
不管是unsigned还是signed,同类型宽度都是一样,short占2字节共16个位,无符号可以完全利用这16个位来表示数字,就有2^16=65536中可能,可以表示0~65535,而有符号类型要用到最高位表示符号,2^15 = 32768,所以能表示-32768~32767,为了不出现两个0的情况,+0和-0,底层实现一般是用2的补码来表示负数,一个负数的二进制表示,可以由这个负数的绝对值的二进制表现形式取反再加1得到,

比如16位short值-1,绝对值是1,二进制表示为:
0000 0000 0000 0001
取反
1111 1111 1111 1110 + 1 =
1111 1111 1111 1111
而正好这个数也是无符号型最大值65535的表现形式,所以对于这个二进制,是解释为65535还是-1,那就是printf里格式化的功能了。
嗳尔yr
2018-04-05 · TA获得超过1万个赞
知道小有建树答主
回答量:88
采纳率:100%
帮助的人:3.3万
展开全部

C语言中unsigned  int是无符号整数的意思。

无符号整型(unsigned  int):

(1)我们都知道整型是4个字节(有些编译器不同,可能会是2个),即32位,无符号整型当然也为32位。

(2)既然是32位,无符号整型的取值是32个0~32个1,即:0~4294967295

(3)我们举个例子:32位有点长,所以我们拿16位的unsigned short int 来举例。
short int 是16位的,无符号的范围是0~65535,就拿十进制的32767(以下的所有举例均拿这个数字来说事了)来说,它的二进制为:

0111 1111 1111 1111

对于无符号的整型32767来说,它的二进制的最高位称为数据位,即那个0就是数据位,数据位是要参与运算的,如果我们把0改成1,即16个1,它的十进制就是65535(就是2的15次方+2的14次方...一直加到2的0次方),这是不同于有符号整型的。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-27
展开全部
unsigned 表示无符号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-27
展开全部
无符号整型,注意它的数值表示范围即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-27
展开全部
无符号整型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式