[C言語] Cパズルブック 1.4.5 ビット演算子 論理否定演算子 !

『Cパズルブック』(Alan R.Feuer, 1985)
[Mac M2 Pro 12CPU, MacOS Ventura 13.3.1, clang 14.0.3]

問1.4.5の解法は以下の通りです。

#include <stdio.h>
#define PRINT(int) printf("%d\n",int)

int main() {
    int x , y;
    
    x = 1; y = -1;

    // 問1.4.5
    PRINT( !x | x);   // 1

    // 論理否定演算子 !を優先
    PRINT( (!x) | x); // 1

    // 計算1: !x
    // x = 0b00000001 = TRUE
    // ! --------------
    //     FALSE or 0

    // 計算2: (!x) | x
    // Lt = 0b00000000 = FALSE
    // x  = 0b00000001 = TRUE
    // | -------------
    //      TRUE or 1

    // よってTRUE(10進数1)になる

    return 0;
}
1
1