『新・明解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と比較している。

 


書籍情報



Copyright (C) 2016 "HYOGOKURUMI" All Rights Reserved./「来未炳吾・平極ルミ・HYOGOKURUMI」の発達障害考察を主とした全ての発信は、相互不干渉など特別な約束をした者達を除き、どなたでもご活用できます。ただし著作権は放棄しておりません。あしからずご了承ください。詳細は著作権に関するガイドラインをご一読ください。/「HYOGOKURUMI.site」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。