谈谈unsigned char,short,int ,long的位长

原文:http://www.cnblogs.com/yqskj/articles/2229480.html

最近经常见到这些unsigned char,short,int ,long的定义,有时真的不确定位长是多少

,上网查,又话是跟编译器有关,没一个准确答案。于是只好自己找答案,其实用一个最简

单地方就可以知道其长度,就是用sizeof函数。于是我写了如下一段:       

        unsigned char uint8 = 0;

        signed char int8 = 0;

        unsigned short uint16 = 0;

        signed short int16 = 0;

        unsigned int uint32 = 0;

        signed int int32 = 0;

        float fp32 = 0;

        double fp64 = 0;

        unsigned long ulong = 0;

printf("unsigned char is %d bit\n\r", sizeof(uint8)*8);

printf("signed char is %d bit\n\r", sizeof(int8)*8);

printf("unsigned short is %d bit\n\r", sizeof(uint16)*8);

printf("signed short is %d bit\n\r", sizeof(int16)*8);

printf("unsigned int is %d bit\n\r", sizeof(uint32)*8);

printf("signed int is %d bit\n\r", sizeof(int32)*8);

printf("float fp32 is %d bit\n\r", sizeof(fp32)*8);

printf("double fp64 is %d bit\n\r", sizeof(fp64)*8);

printf("unsigned long is %d bit\n\r", sizeof(ulong)*8);
复制代码编译运行后,答案出现了:

unsigned char is 8 bit

signed char is 8 bit

unsigned short is 16 bit

signed short is 16 bit

unsigned int is 32 bit

signed int is 32 bit

float fp32 is 32 bit

double fp64 is 64 bit

unsigned long is 32 bit
复制代码(上述结果是在arm-gcc编译得出)


令我感到意外的是,原来以为unsigned long是64位的,而其实它是32位而已,千万别被long

这个单词迷惑了。

不过,我又感到迷惑的是unsigned int 和unsigned long既然都是32位,那它们有什么区别

呢?

答案找到了:

在32位系统中

Long int = int = 32bit   short   int   = 16bit


在16位系统中 
short   int = int = 16bit   long   int = 32bit


总之:   short   int = 16bit   long   int   = 32bit


解决可移植性

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值