#define FOO 1u 2u 4u ... 1u和2u是什么意思?

时间:2013-02-12 23:55:44

标签: c typedef

我正在使用HCS12 MCU,这是该库的一部分。我只是想知道什么 1U,2U,4U,8U ......在此代码中表示。我还在学习如何使用课程,请尝试用外行术语来解释。

我的猜测: 这只是意味着哪个位设置为高? 1U = 00000001 2U = 00000010 ...

这会叫什么?

由于

    typedef union {
  byte Byte;
  struct {
    byte             :1; 
    byte ADR1        :1;                                       /* Slave Address Bit 1 */
    byte ADR2        :1;                                       /* Slave Address Bit 2 */
    byte ADR3        :1;                                       /* Slave Address Bit 3 */
    byte ADR4        :1;                                       /* Slave Address Bit 4 */
    byte ADR5        :1;                                       /* Slave Address Bit 5 */
    byte ADR6        :1;                                       /* Slave Address Bit 6 */
    byte ADR7        :1;                                       /* Slave Address Bit 7 */
  } Bits;
  struct {
    byte         :1;
    byte grpADR_1 :7;
  } MergedBits;
} IBADSTR;
extern volatile IBADSTR _IBAD @(REG_BASE + 0x000000E0UL);
#define IBAD                            _IBAD.Byte
#define IBAD_ADR1                       _IBAD.Bits.ADR1
#define IBAD_ADR2                       _IBAD.Bits.ADR2
#define IBAD_ADR3                       _IBAD.Bits.ADR3
#define IBAD_ADR4                       _IBAD.Bits.ADR4
#define IBAD_ADR5                       _IBAD.Bits.ADR5
#define IBAD_ADR6                       _IBAD.Bits.ADR6
#define IBAD_ADR7                       _IBAD.Bits.ADR7
#define IBAD_ADR_1                      _IBAD.MergedBits.grpADR_1
#define IBAD_ADR                        IBAD_ADR_1

#define IBAD_ADR1_MASK                  2U
#define IBAD_ADR2_MASK                  4U
#define IBAD_ADR3_MASK                  8U
#define IBAD_ADR4_MASK                  16U
#define IBAD_ADR5_MASK                  32U
#define IBAD_ADR6_MASK                  64U
#define IBAD_ADR7_MASK                  128U
#define IBAD_ADR_1_MASK                 254U
#define IBAD_ADR_1_BITNUM               1U

3 个答案:

答案 0 :(得分:6)

它定义了无符号整数literal。您还可以使用unsigned long integer查看他们将十六进制文字定义为0x...UL的位置。

如果您想知道它们产生的位模式,只需将十进制文字转换为等效的十六进制或二进制文字。 1U分别以十六进制和二进制形式变为0x01U01b 1

另一个更常见的文字使用f - 后缀,即1.0f之类的单精度浮点文字。

<子> 1。仅供参考,不是标准

的实际文字

答案 1 :(得分:1)

它们只是整数常量。 U后缀使其成为无符号整数而不是整数。

final draft of the C11 standard

的第6.4.4.1节对此进行了描述

答案 2 :(得分:0)

在嵌入式系统中,U literal表示该值为无符号整数

你可以在这里找到一些有用的内容。

information for Literals