Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? 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) & 0x800x80执行按位与,如果未设置第七位,则返回0,否则返回0x80
!是逻辑否定运算符;在!(REG8(DataRegA) & 0x80)中它会否定上面的表达式,即如果它为0则变为1,如果它为非零则变为0。


因此,仅当未设置寄存器的第7位时,才执行if主体。

关于c - if语句中的否定? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18518123/

10-13 08:20