[C言語] Cパズルブック 2.2.4-6 整数と浮動小数点数の型変換

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

問2.2.4-6のコードと出力は以下の通りです。

特記すべきことはありません。

少しダレてきたので、他の教本に一旦移る予定です。Cパズルブックは第1章、第6章、第2章を順に完遂する形となり、キリとしては特に問題ないでしょう。何らかのタイミングでまた戻ってきます。

#include "stdio.h"

#define PR(x) printf("x = %.8g\t", (double)x)
#define NL putchar('\n')
#define PRINT4(x1, x2, x3, x4) PR(x1); PR(x2); PR(x3); PR(x4); NL

int main() {
    double d;
    float f;
    long l;
    int i;

    // 問2.2.4
    d = f = l = i = (double)100/3;
    // (d = (f = (l = (i = (double)100/3))))
    // (d = (f = (l = ((integer)100/3)))) and i=33
    // (d = (f = (long)33)) and l=33
    // (d = (float)33) and f=33
    // ((double)33) and d=33
    PRINT4(i, l, f, d);

    // 問2.2.5
    i = l = f = d = (double)(100000/3);
    // (i = (l = (f = (d = (33333)))))
    // (i = (l = (f = (double)33333))) and d=33333
    // (i = (l = (float)33333)) and f=33333
    // (i = (long)33) and l=33333
    // ((integer)33) and i=33333
    PRINT4(i, l, f, d);

    // 問2.2.6
    d = f = l = i = 100000/3;
    // (d = (f = (l = (i = 100000/3))))
    // (d = (f = (l = ((integer)33333)))) and i=33333
    // (d = (f = (long)33)) and l=33333
    // (d = (float)33) and f=33333
    // ((double)33) and d=33333
    PRINT4(i, l, f, d);

    return 0;
}
x = 33	x = 33	x = 33	x = 33	
x = 33333	x = 33333	x = 33333	x = 33333	
x = 33333	x = 33333	x = 33333	x = 33333