为什么 1 ^ 1 = 0 在 C 中

Why is 1 ^ 1 = 0 in C

在此代码中

#include <stdio.h>
int main(void){
    int i = 1, j = 0;

    printf("%d", i ^ !j);

    return 0;
} 

此代码的结果是 0 而不是 1 即使 i = 1 和 j = 1.

它是如何工作的?

^ 是按位排他或在 C 中,不是取幂。因此,当您将 1 的所有设置位翻转为 1 时,您会得到 0。