zoukankan      html  css  js  c++  java
  • 数据类型 -- uint32_t 类型

    整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

    ----------------

    数据类型 -- uint32_t 类型

     
    数据类型 -- uint32_t 类型

    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 ", a);
    printf("sizeof(a) = %d ", sizeof(a));

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

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

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/2790394.html
Copyright © 2011-2022 走看看