演習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と比較している。
書籍情報
コメント