stm32类型定义详解uint8

    xiaoxiao2021-04-12  62

    uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型

    这些数据类型是 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  

    格式化输出:

    unit64_t     %llu   

    unit32_t     %u

    unit16_t    %hu

    注意:

    必须小心 uint8_t 类型变量的输出,例如如下代码,会输出什么呢?

    uint8_t fieldID = 67; cerr<< "field=" << fieldID <<endl;

    结果发现是:field=C 而 不是我们所想的 field=67

    这是由于 typedef unsigned char uint8_t; 

    uint8_t 实际是一个 char, cerr << 会输出 ASCII 码是 67 的字符,而不是 67 这个数字.

    因此,输出 uint8_t 类型的变量实际输出的是其对应的字符, 而不是真实数字.

    若要输出 67,则可以这样:

    cerr<< "field=" << (uint16_t) fieldID <<endl;

    结果是:field=67

    同样: uint8_t 类型变量转化为字符串以及字符串转化为 uint8_t 类型变量都要注意, uint8_t类型变量转化为字符串时得到的会是ASCII码对应的字符, 字符串转化为 uint8_t 变量时, 会将字符串的第一个字符赋值给变量.

    转载请注明原文地址: https://ju.6miu.com/read-667373.html

    最新回复(0)