size_t的一个疑问

书上说size_t是unsigned int类型. 然后又说和机器无关.推荐使用size_t.

我有点困惑,unsigned int是和机器有关的,我们大部分X86CPU int都是32位.
size_t和机器无关,然后它有是#define unsigned int size_t
这里不是矛盾吗?有人知道size_t到底为什么会和机器无关? 

问题补充:
我非常不适应使用size_t.因为编译器会经常从UINT到SIZE_T给出警告.我觉得既然大家都是32位机器.使用size_t或者SIZE_T,还不如使用UINT方便.
---------------------------
MSDN的描述
size_t unsigned integer 。Result of sizeof operator. 

而对于sizeof,MSDN的描述是:
The result of the sizeof operator is of type size_t, an integral type defined in the include file STDDEF.H. This operator allows you to avoid specifying machine-dependent data sizes in your programs.
 
你再看STDDEF.H里的定义:
#ifndef   _SIZE_T_DEFINED   
  #ifdef     _WIN64   
  typedef   unsigned   __int64         size_t;   
  #else   
  typedef   _W64   unsigned   int       size_t;   
  #endif   
  #define   _SIZE_T_DEFINED   
  #endif  

所以,设计   size_t   就是为了适应多个   平台的 ,size_t是针对系统定制的一种数据类型,一般是整形,因为C/C++标准只定义一最低的位数,   
  而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定议这样的数据类型。一般这种类型都会定义到它具体占几位内存等。当然,有些是编译器或系统已经给定义好的。

------------------------------------
编译器会经常从UINT到SIZE_T给出警告
------------------------------------
这个是对的,因为有时就是unsigned   int;有时就是unsigned   long;  你用UINT可能在当前平台下没有问题,但是换了平台就有问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值