关于C语言的 可移植的数据类型

关于C语言的 可移植的数据类型


对于数据类型,我们都知道它是什么,可以说是在熟悉不过的东西了。但是我们真的有关注过它么?被很多人忽视,或许是因为它太过基础了的原因。
拿C语言来说,要知道,在C语言的标准中,它并没有强制要求每种数据类型的具体长度,它实际上严格要求的是每种数据类型的最少长度,也就是说,不同的系统下,不同的编译器下,你定义的数据的实际长度可能是互不相同的。有没有发现什么?是的,这种情况下的移植,存在那些令人头大的问题(鬼知道会发生什么)。所以一种神奇的东西出现在了我们眼前--可移植的类型(inttypes.h)。
inttypes.h头文件里面到底装了些什么神奇的东西呢?比如说里面定义的 uint32_t,它定义的是32位无符号整型,32位长度,在不同的系统中,它可能是unsigned int 也可能是 unsigned long 。是的,无论实际是什么类型,他们的实际长度是一致的,绝对能容纳下我想存储的数据。与这类型同类的,被称之为确切长度类型(exact width type)。
是的,他们不是C语言的标准数据类型,他们是一群在头文件inttypes.h中,用typedef定义出的一群新的类型名。对这个头文件了解的应该知道,uint32_t,在实际使用中不是最合适的,最合适的还是最小长度类型(minimum width type)。例如:int_least8_t,这对应的是int8_t,但不同的是无论所在系统中是否有int8_t,我们都能得到一个不小于8位的类型。
你以为这就是结束?光有定义可不行,我们还需要有与之相对的方式让我们能够,把数据再呈现出来。不用担心,inttypes.h已经给我们准备好了,例如:
int_least16_t my16; 
printf("我的16位数据 = "PRId16"\n",my16);
如果你感兴趣,不妨去看看inttypes.h的源代码,你会获得更多你想知道的。
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值