※ ChatGPTを利用し、要約された質問です(原文:「解きながら学ぶC言語」という本の問題8-3)
C言語の問題8-3でのマクロ展開について
このQ&Aのポイント
「解きながら学ぶC言語」という本の問題8-3で、2つの値の大きい方を返すマクロが定義されています。
このマクロを利用してmax(max(max(a, b), c), d)を展開すると、不等号(>)ではなくコンマ(:)が使用される部分があります。これは参考書のミスですか?
腑に落ちないため、質問させていただきました。
2つの値の大きい方の値を返すマクロを以下のように定義!
#define max(x, y) ((x) > (y) ? (x) : (y))
このマクロを利用してmax(max(max(a, b), c), d)を展開すると
((((((a) > (b) ? (a) : (b))) > (c) ? (((a) > (b) ? (a) : (b))) : (c))) > (d) ?
(((((a) > (b) ? (a) : (b))) > (c) ? (((a) > (b) ? (a) : (b))) : (c))) > (d))
このようになる。
そこで質問ですが、展開後の最後の部分、
(c))) > (d))は、不等号(>)ではなくコンマ(:)ですよね?
これは参考書のミスということでよろしいんでしょうか?
少々腑に落ちないので質問させていただきました。
長々と長文申し訳ございません。
ご回答宜しくお願いします!
補足
間違えました! コンマではなくコロン(:)でしたね。 申し訳ないです!