C中这个逻辑运算符组合的含义是什么
what is the meaning of this Logical operators combination in C
我知道 -> 是一个指针 |= 是或。
这条线的逻辑意义是什么?
TIMER0->ROUTELOC0 |= TIMER_ROUTELOC0_CC0LOC_LOC15
您正在对寄存器的值进行 ORing(设置)操作。你的处理器有一个带有寄存器 ROUTELOC0 的 TIMER0。它可能有点 "CC0LOC_LOC15"
我建议查看您的处理器的数据 sheet 以了解具体含义。
|= 不代表或。 |表示或。
|=类似于+=,即
A |= B 等同于 A = A | B
所以回答你的问题:
看起来 TIMER0
是一个包含成员 ROUTELOC0
的结构。上面的表达式将 ROUTELOC0
设置为 ROUTELOC0
与 TIMER_ROUTELOC0_CC0LOC_LOC15
进行或运算的结果
->
是结构解引用运算符,|=
是按位或赋值运算符(复合赋值)。
复合作业:
x |= y ;
等同于:
x = x | y ;
重要的是要了解按位或 (|
) 与布尔或 (||
) 不同。它在这里用于设置 x
中的特定位,而其他位未设置。
例如,将x
的两个最低有效位设置为1:
x: 10100000
y: 00000011
---------
x|y: 10100011
我知道 -> 是一个指针 |= 是或。 这条线的逻辑意义是什么?
TIMER0->ROUTELOC0 |= TIMER_ROUTELOC0_CC0LOC_LOC15
您正在对寄存器的值进行 ORing(设置)操作。你的处理器有一个带有寄存器 ROUTELOC0 的 TIMER0。它可能有点 "CC0LOC_LOC15"
我建议查看您的处理器的数据 sheet 以了解具体含义。
|= 不代表或。 |表示或。
|=类似于+=,即
A |= B 等同于 A = A | B
所以回答你的问题:
看起来 TIMER0
是一个包含成员 ROUTELOC0
的结构。上面的表达式将 ROUTELOC0
设置为 ROUTELOC0
与 TIMER_ROUTELOC0_CC0LOC_LOC15
->
是结构解引用运算符,|=
是按位或赋值运算符(复合赋值)。
复合作业:
x |= y ;
等同于:
x = x | y ;
重要的是要了解按位或 (|
) 与布尔或 (||
) 不同。它在这里用于设置 x
中的特定位,而其他位未设置。
例如,将x
的两个最低有效位设置为1:
x: 10100000
y: 00000011
---------
x|y: 10100011