^= 运算符有啥作用?
Posted
技术标签:
【中文标题】^= 运算符有啥作用?【英文标题】:What does the ^= operator do?^= 运算符有什么作用? 【发布时间】:2022-01-16 11:07:26 【问题描述】:您好,我想知道是否有人可以解释 ^= 运算符在这个 c 程序中的作用?该程序是为 arm 架构编写的。
#include <stdint.h>
#include <pru_cfg.h>
volatile register uint32_t __R30;
volatile register uint32_t __R31;
void main()
volatile uint32_t gpo;
/* Clear GPO pins */
gpo = (__R30 & 0xFFFF0000);
__R30 = gpo;
while(1)
gpo = __R30;
gpo ^= 0xF;
__R30 = gpo;
__delay_cycles(100000000); // half-second delay
如果您需要任何其他信息,请告诉我,谢谢
【问题讨论】:
【参考方案1】:在 C 中,^
是按位的exclusive or,并且
gpo ^= 0xF;
等价于
gpo = gpo ^ 0xF;
更多详情请见https://en.cppreference.com/w/c/language/operator_assignment#Compound_assignment。
【讨论】:
也许更具体的解释是它只会切换低四位会增加一些东西。在较长的形式中表达它是一种更简洁的方式。过去,它会生成更高效的代码,但通常,gpo = gpo ^ 0xf;
与任何现代编译器(使用 SSA)一样高效。以上是关于^= 运算符有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章