[转]数据类型 -- uint32_t 类型

最近在关注一个C++的开源项目,遇到了些基础的东东,算是记录下来吧,毕竟VC上是很少遇到的。估计写博客的朋友也是从别处贴过来的。

 

转自 http://hi.baidu.com/zengzhaonong/blog/item/149b11f467f7d366ddc474cf.html

 

 

体会[2006-10-25]:
1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.
    如:
    a> 当某个数据不可能为负数时我们一定要考虑用以下类型:
       unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsigned long int,
    b> 当有些数据你不知道是正负时一定不要用"a>"中的类型, 不然他永远也不可能为负.
       
    c> 数据的边界值要多注意, 如:
       uint32_t    a, b, c;
       uint64_t    m;
      
       m = a * b + c;
       在该运算中可能出现错误, "a*b"的类型可能超过uint32_t的最大值,这时一定不要忘了类型转换.
       m = ((uint64_t)a) * b + c;

2>. 在适当的时候要会自我定义数据类型.
    我们都知道linux C开发中的常见扩展数据类型的定义有:uint8_t, uint16_t, uint32_t, uint64_t, size_t, ssize_t, off_t .... 他之所以要自己定义出数据类型是有道理的, 如: typdef unsigned int uint32_t; 表示uint32_t为32位无符号类型数据, 其实size_t也是32位无符号数据类型,
为什么不直接写"unsigned int"呢?
     为了程序的可扩展性, 假如将来我们需要的数据大小变成了64bit时,我们只需要将typedef long long size_t就可以了, 不然我们可要修改好多好多的地方了.
这种设计我们同样可以应用到自己的开发中来,当自己设计一个int类型保存某种数据时,但你又没把握将来是不是要用long int时你可以引用一个自己定义的数据类型的啊!


stdint.h
-----------------------------
typedef unsigned int            uint32_t;


uint32_t.c
-----------------------------
#include <stdio.h>
#if 0      
#include <stdint.h>    // uint32_t
#endif     
           
typedef unsigned int       uint32_t;
typedef unsigned
long long uint64_t;
             
int main()
{
        uint32_t a;
        a = 12;
        printf("a = %x/n", a);
        printf("sizeof(a) = %d/n", sizeof(a));

        uint64_t b;
        b = 12;
        printf("b = %x/n", b);
        printf("sizeof(b) = %d/n", sizeof(b));
}  



a = c
sizeof(a) = 4
b = c
sizeof(b) = 8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值