C语言的un来自signed int到底是什么意思
的有关信息介绍如下:问题补充说明:搞清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();}运行结:327683276732769327683276932767655356553465533Press any key to continue没看规律请朋友解释谢谢
不管是unsigned还是signed,同类型宽度都是一样,360问答short占2字问业松子袁节共16个位,无符号可以完十波求免效所前进全利用这16个位来表示数字,就有2^16=65536中可能,可以表示0~65535,而有符号类型要用到最高位表示符号,2^苏防队粒愿叫主括春15=32768,所以能表示-32768~32767,为了不出现两个0的情况,+0和-0,底层实现一识处月创独费质乱假反站般是用2的补码来表示负数,一个负数的二进制表示,可以由这个负数的绝对值的二进制表现形式取反再加1得到,
比如16位short值-1,绝对值是1,二进制协件长表示为:
0000000000000001
取反
1111111111111110+1=
1111111111111111
而正好这个数也是无符号型最大值65535的表现形式,所以对于这个二进总无结机宣制,是解释为65535还或敏裤是拿链-1,那就是printf里格式化的衫简功能了。