C语言中signed和unsigned的区别和数值变量的取值范围

short、int 和 long 类型默认都是带符号位的,符号位以外的内存才是数值位。如果只考虑正数,那么各种类型能表示的数值范围(取值范围)就比原来小了一半。

C语言规定,在符号位中,用 0 表示正数,用 1 表示负数。例如 int 类型的 -10 和 +16 在内存中的表示如下:

è´æ°-10åæ­£æ°+16å¨åå­ä¸­çå­å¨

  • 32位编译系统:int占四字节,与long相同。

  • 64位编译系统:int占四字节,long占8字节,long数据范围变为:-2^63~2^63-1

 由于我这是32位操作系统所以int和long的取值范围是一样的(详见limits.h文件)

下表全面地总结了不同类型的整数,以不同进制的形式输出时对应的格式控制符(--表示没有对应的格式控制符)。

 shortintlongunsigned shortunsigned intunsigned long
八进制------%ho%o%lo
十进制%hd%d%ld%hu%u%lu
十六进制------%hx 或者 %hX%x 或者 %X%lx 或者 %lX

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值