『新・明解C言語 入門編 第2版』演習問題解答例 8ー2

演習8ー2

問: 二つの値xとyの大きいほうの値を求める関数式マクロは次のように定義できる。

 #define max(x , y) (((x) > (y)) ? (x) : (y))

 このマクロを利用して、四つの値a, b, c, dの最大値を求める、次に示す各式がどのように展開されるかを示し、考察を加えよ。

 max(max(a, b), max(c, d)
 max(max(max(a, b), c), d)

// Ex0802.c

#include <stdio.h>
#define max(x , y) (((x) > (y)) ? (x) : (y))

int main(void)
{
    
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    
    printf("a = ");
    scanf("%d", &a);
    printf("b = ");
    scanf("%d", &b);
    printf("c = ");
    scanf("%d", &c);
    printf("b = ");
    scanf("%d", &d);
    
    printf("最大値は %d です。\n", max(max(a, b), max(c, d)));
    printf("最大値は %d です。\n", max(max(a, b), c), d);
    
    return 0;

}

コメント

 max(max(a, b), max(c, d)はa,bとc,dを比較した後、それぞれの結果を比較している。
 max(max(max(a, b), c), d)は、a,bを比較した結果とcを比較し、その結果をdと比較している。

 


書籍情報


コメント

タイトルとURLをコピーしました