为什么 if 语句为假,因为 ~0 为 1,即 1==1 应该为真?

Why the if statement is false as ~0 is 1 which is 1==1 should be true?

#include <stdio.h>

int main() {
    if (~0 == 1)  
        printf("yes\n");
    else
        printf("no\n");
}

为什么 if 声明是错误的?谁能解释一下?

~0 等于 -1,不是 1。

~ 二进制补码运算符是一元运算符,具有 'flipping' 位的效果。

因此,当您执行 ~0 == 1 时,它会检查 -1 == 1 是否为假