cod*_*ugh -1 c if-statement negation negative-number
我知道0和NULL自己评估为FALSE,我知道负整数或正整数自己评估为TRUE.
我的理解是NOT运算将在计算表达式后发生,因此if (-1)将进行求值TRUE,然后应用!操作数将意味着NOT TRUE等于FALSE.这是正确的操作顺序,是否正确if (!(-1))评估FALSE?
if (!(-1))可以通过考虑运算符优先级来计算评估.
首先,将一元-应用于1,产生积分-1.然后,这个值在逻辑上被否定了!.这涉及折叠-1成逻辑值.C中的规则对于整数类型来说很简单:0是假的,其他一切都是真的.
因此-1是真实的,当逻辑否定发生时,我们就会变得虚假.
因此,这个陈述是错误的.