Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我正在检查嵌入式系统中按键的C代码。
在下面的代码中,您可以看到带有!的if语句。在检查REG8之前,在这种情况下这意味着什么?我只是在问字符(!),而不是代码的作用。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我正在检查嵌入式系统中按键的C代码。
在下面的代码中,您可以看到带有!的if语句。在检查REG8之前,在这种情况下这意味着什么?我只是在问字符(!),而不是代码的作用。
if(!(REG8(DataRegA) & 0x80)){
*key=REG8(DataRegA) & 0x0F;
return(1);
}
最佳答案
该代码检查该寄存器中第7位的状态。如果关闭,则执行代码块。REG8(DataRegA)
大概获取某个MCU寄存器的值,该值可能反映了某些输入信号的状态。REG8(DataRegA) & 0x80
与0x80
执行按位与,如果未设置第七位,则返回0,否则返回0x80
;!
是逻辑否定运算符;在!(REG8(DataRegA) & 0x80)
中它会否定上面的表达式,即如果它为0则变为1,如果它为非零则变为0。
因此,仅当未设置寄存器的第7位时,才执行if
主体。
关于c - if语句中的否定? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18518123/
10-13 08:20