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

问题描述

#include <stdio.h>

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

为什么 if 语句是错误的?谁能解释一下?

解决方法

~ 二元补码运算符是一元的,具有“翻转”位的效果。

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

,

~0 等于 -1,而不是 1。