[C言語] Cパズルブック 1.2 代入演算子

『Cパズルブック』(Alan R.Feuer, 1985)
[M1 Mac, Big Sur 11.7.2, clang 13.0.0, NO IDE]

『Cプログラミングの落とし穴』をようやく読了しました。今後もプログラミングに関する名著を継続して読んでいきます。

次はベル研究所内の教材を元に製作された『Cパズルブック』です。1985年の初版なので記述形式はK&Rスタイルになります。

1.2の3番目はまずy==zで左辺右辺を比較していてイコールが成り立つのでTRUE 1になり、これをxに代入するためPRINTXの出力は1になります。比較演算子==と代入演算子=の使い分けが出題の目的です。

4番目は式自体はx = 1,とy = z = 4の比較でFALSE 0になりますが、xは1のままですから1が出力されます。

第8章までありますが、来年1月中の読了を目指します。これを読み切ったら、以前さらっと目を通しただけのK&R 第2版(ANSI C)に取り組みます。

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

int main() {
    int x = 2, y, z;

    x *= 3 + 2;  // 10
    PRINTX;

    x *= y = z = 4; // 40
    PRINTX;

    x = y == z; // 1
    PRINTX;

    x == ( y = z); // 1
    PRINTX;

    return 0;
}