精华内容
参与话题
问答
  • 浅析uint8_t / uint16_t / uint32_t /uint64_t

    万次阅读 多人点赞 2018-09-13 18:03:47
    简单来说,uint8_t / uint16_t / uint32_t /uint64_t这些数据类型都只是别名而来,具体如下: 一、C语言数据基本类型 在C语言中有6种基本数据类型:short、int、long、float、double、char 1)整型:short int、...

    简单来说,uint8_t / uint16_t / uint32_t /uint64_t这些数据类型都只是别名而来,具体如下:

    一、C语言数据基本类型

    在C语言中有6种基本数据类型:short、int、long、float、double、char

    1)整型:short  int、int、long int

    2)浮点型:float、double

    3)字符类型:char


    二、分析uint8_t\uint_16_t\uint32_t\uint64_t

    1、数据来源:这些数据类型中都带有_t, _t 表示这些数据类型是通过typedef定义的,而不是新的数据类型。也就是说,它们其实是我们已知的类型的别名。

    2、typedef:typedef用来定义关键字或标识符的别名

    3、使用原因:方便代码的维护。比如,在C中没有bool型,于是在一个软件中,一个程序员使用int,一个程序员使用short,会比较混乱,最好用一个typedef来定义一个统一的bool,每个程序员都可以用这个别名的bool。

    不同的平台会有不同的字长,所以利用预编译和typedef可以方便的维护代码。

    typedef unsigned char uint8_t;//将uint8_t别名为无符号字符型

    4、定义:在C99标准中定义了这些数据类型,具体定义在:stdint.h中

    定义类型如下:

    typedef   signed          char int8_t;
    typedef   signed short     int int16_t;
    typedef   signed           int int32_t;
    typedef   signed       __INT64 int64_t;
    
    /* exact-width unsigned integer types */
    typedef unsigned          char uint8_t;
    typedef unsigned short     int uint16_t;
    typedef unsigned           int uint32_t;
    typedef unsigned       __INT64 uint64_t;
    
    /* 7.18.1.2 */
    /* smallest type of at least n bits */
    /* minimum-width signed integer types */
    typedef   signed          char int_least8_t;
    typedef   signed short     int int_least16_t;
    typedef   signed           int int_least32_t;
    typedef   signed       __INT64 int_least64_t;
    
    /* minimum-width unsigned integer types */
    typedef unsigned          char uint_least8_t;
    typedef unsigned short     int uint_least16_t;
    typedef unsigned           int uint_least32_t;
    typedef unsigned       __INT64 uint_least64_t;
    
    /* 7.18.1.3 */
    /* fastest minimum-width signed integer types */
    typedef   signed           int int_fast8_t;
    typedef   signed           int int_fast16_t;
    typedef   signed           int int_fast32_t;
    typedef   signed       __INT64 int_fast64_t;
    
    /* fastest minimum-width unsigned integer types */
    typedef unsigned           int uint_fast8_t;
    typedef unsigned           int uint_fast16_t;
    typedef unsigned           int uint_fast32_t;
    typedef unsigned       __INT64 uint_fast64_t;
    
    /* 7.18.1.4 integer types capable of holding object pointers */
    #if __sizeof_ptr == 8
    typedef   signed       __INT64 intptr_t;
    typedef unsigned       __INT64 uintptr_t;
    #else
    typedef   signed           int intptr_t;
    typedef unsigned           int uintptr_t;
    #endif
    
    /* 7.18.1.5 greatest-width integer types */
    typedef   signed     __LONGLONG intmax_t;
    typedef unsigned     __LONGLONG uintmax_t;

    5、格式化输出:

    1)uint16_t %hu

    2)uint32_t %u

    3)uint64_t %llu

    6、uint8_t类型的输出:

    typedef unsigned char uint8_t;//将uint8_t别名为无符号字符型
    
    uint8_t buf = 65;
    
    printf("buf = %d",buf);//错误
    printf("buf = %c",buf);//正确,打印出字符的ASCII码

     

    展开全文
  • _t的意思到底表示什么?...uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很...

    _t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。

    uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如C中没有bool,于是在一个软件中,一些程序员使用int,一些程序员使用short,会比较混乱,最好就是用一个typedef来定义,如:
    typedef char bool;

    一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。

    按照posix标准,一般整形对应的*_t类型为:
    1字节     uint8_t
    2字节     uint16_t
    4字节     uint32_t
    8字节     uint64_t

     

    转载于:https://www.cnblogs.com/ruzhuan/p/3436203.html

    展开全文
  • 一、C语言基本数据类型回顾 在C语言中有6种基本数据类型:short、int、long、float、double、cha...

    一、C语言基本数据类型回顾

    在C语言中有6种基本数据类型:short、int、long、float、double、char

    1、数值类型

    1)整型:short、int、long

    2)浮点型:float、double

    2、字符类型:char

    二、typedef回顾

    typedef用来定义关键字或标识符的别名,例如:

    typedef double wages;
    typedef wages salary;

    三、uint8_t\uint_16_t\uint32_t\uint64_t

    1、这些类型的来源:这些数据类型中都带有_t, _t 表示这些数据类型是通过typedef定义的,而不是新的数据类型。也就是说,它们其实是我们已知的类型的别名。

    2、使用这些类型的原因:方便代码的维护。比如,在C中没有bool型,于是在一个软件中,一个程序员使用int,一个程序员使用short,会比较混乱。最好用一个typedef来定义一个统一的bool:

    typedef char bool;

    在涉及到跨平台时,不同的平台会有不同的字长,所以利用预编译和typedef可以方便的维护代码。

    3、这些类型的定义:
    在C99标准中定义了这些数据类型,具体定义在:/usr/include/stdint.h    ISO C99: 7.18 Integer types

    #ifndef __int8_t_defined  
    # define __int8_t_defined  
    typedef signed char             int8_t;   
    typedef short int               int16_t;  
    typedef int                     int32_t;  
    # if __WORDSIZE == 64  
    typedef long int                int64_t;  
    # else  
    __extension__  
    typedef long long int           int64_t;  
    # endif  
    #endif  
     
     
    typedef unsigned char           uint8_t;  
    typedef unsigned short int      uint16_t;  
    #ifndef __uint32_t_defined  
    typedef unsigned int            uint32_t;  
    # define __uint32_t_defined  
    #endif  
    #if __WORDSIZE == 64  
    typedef unsigned long int       uint64_t;  
    #else  
    __extension__  
    typedef unsigned long long int  uint64_t;  
    #endif  

    4、格式化输出:

    uint16_t %hu
    uint32_t %u
    uint64_t %llu

    5、uint8_t类型的输出:

    注意uint8_t的定义为

    typedef unsigned char           uint8_t;

    uint8_t实际上是一个char。所以输出uint8_t类型的变量实际上输出其对应的字符,而不是数值。例:

    uint8_t num = 67;
    cout << num << endl;

    输出结果:C

    参考:

    http://blog.sina.com.cn/s/blog_9dcc0fb90101gdvo.html

    http://blog.csdn.net/mrlixirong/article/details/48416533

    http://blog.csdn.net/kiddy19850221/article/details/6655066

     
    ---------------------  
    作者:海阔天空sky1992  
    来源:CSDN  
    原文:https://blog.csdn.net/Mary19920410/article/details/71518130  
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • uint8、uint16、uint32、uint64 这大家可能比较理解unit,unsigned int 嘛 uint8,我想很多人也能够理解,其实是unsigned char ...那么 _t 呢?其实就是 typedef 的意思 我们在学习标准的C语言时,...

    转发而来,原文链接为https://blog.csdn.net/mrlixirong/article/details/48416533

    uint8、uint16、uint32、uint64 这大家可能比较理解unit,unsigned int 嘛

    uint8,我想很多人也能够理解,其实是unsigned char

    那么 _t 呢?其实就是 typedef 的意思

    我们在学习标准的C语言时,常见的有 bit、char、short、int、long、float、double等

    却几乎不曾见到uint8、uint16 等

    所以,人家在这些自定义数据类型后面加 _t 来表示这些数据类型是 typedef 的

    以上数据类型在C99中定义如下,其他地方的引用也大同小异了。

     

     

    这些数据类型是 C99 中定义的,具体定义在:/usr/include/stdint.h    ISO C99: 7.18 Integer types

     

    1.   
    2. #ifndef __int8_t_defined  
    3. # define __int8_t_defined  
    4. typedef signed char             int8_t;   
    5. typedef short int               int16_t;  
    6. typedef int                     int32_t;  
    7. # if __WORDSIZE == 64  
    8. typedef long int                int64_t;  
    9. # else  
    10. __extension__  
    11. typedef long long int           int64_t;  
    12. # endif  
    13. #endif  
    14.   
    15.   
    16. typedef unsigned char           uint8_t;  
    17. typedef unsigned short int      uint16_t;  
    18. #ifndef __uint32_t_defined  
    19. typedef unsigned int            uint32_t;  
    20. # define __uint32_t_defined  
    21. #endif  
    22. #if __WORDSIZE == 64  
    23. typedef unsigned long int       uint64_t;  
    24. #else  
    25. __extension__  
    26. typedef unsigned long long int  uint64_t;  
    27. #endif  
    展开全文
  • 数据类型 uint8_t uint16_t uint32_t uint64_t

    千次阅读 2012-07-23 19:17:25
    Roger 的 uint8_t是什么数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的...
  • 一、C语言数据基本类型 在C语言中有6种基本数据类型:short、int、long、float、double、char 1)整型:short int、int、long int 2)浮点型:float、double 3)字符类型:char C++的主要数据类型,主要分为三...
  • 1、数据来源:这些数据类型中都带有_t,_t表示这些数据类型是通过typedef定义的,而不是新的数据类型。也就是说,它们其实是我们已知的类型的别名。 2、typedef:typedef用来定义关键字或标识符的别名 3、使用原因...
  • 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问...
  • 关于uint32_t uint8_t uint64_t 的问题

    千次阅读 2012-08-27 20:22:18
    怎么又是u又是_t的?u代表的是unsigned相信大家都...uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如
  • 简单说,就是使用typedef给类型起的别名,一个C/C++的工程中最好使用typedef,如果工程涉及到跨平台,不同的平台会有不同的字长,利用预编译...1字节 uint8_t 2字节 uint16_t 4字节 uint32_t 8字节 uint64_t ...
  • 浅析C语言之uint8_t / uint16_t / uint32_t /uint64_t

    万次阅读 多人点赞 2017-05-10 16:05:51
    一、C语言基本数据类型回顾 在C语言中有6种基本数据类型:short、int、long、float、double、char 1、数值类型 1)整型:short、int、long 2)浮点型:float、double 2、字符类型:char 二、typedef回顾 ...
  • 关于uint8_t/uint16_t/uint32_t/uint_fast16_t

    千次阅读 2018-03-27 14:10:32
    在嵌入式编程中经常遇到用uint8_t、uint16_t、uint32_t、uint_fast16_t之类的关键字定义一些整型变量,但是具体表示什么意思,并不是太清楚,只是把它当成int之类的整型变量定义关键字。在自己理解他们之前,先...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 文章目录目录uint8_t\uint_16_t\uint32_t\uint64_t格式化输出 uint8_t\uint_16_t\uint32_t\uint64_t 在 C99 标准(ISO C99: 7.18 Integer types)的 stdint.h 头文件中通过 typedef 定义了这些数据类型: #ifndef __...
  • uint8_t revert_one_byte(uint8_t in) { int i=0; uint8_t _tmp_din=0; uint8_t sign = 1; for (i=0;i<8;i++) { _tmp_din |=((in&(sign<<i))>>i)<<(7-i); ...
  • 在写套接口时发现uint8_t与uint16_t,不知为什么新的数据类型,便经过一番查询,得: 按照posix标准,一般整形对应的*_t类型为: 1字节 uint8_t 2字节 uint16_t 4字节 uint32_t 8字节 uint64_t 这不是什么新的数据...
  • 这些数据类型是 C99 中定义的,具体定义在:/usr/include/stdint.h ISO C99: 7.18 Integer types

空空如也

1 2 3 4 5 ... 20
收藏数 12,133
精华内容 4,853
关键字:

uint8