私はマクロを読んでいて、この #define が何をするのか知りたいですか? 「?」がわかりません。そしてその ":"。もしそれが
#define min(a,b) (a < b ? a : b)
これはマクロ機能ではなく、C のコア機能であり、条件演算子と呼ばれる三項演算子です。
x = a < b ? a : b
本質的には次のとおりです。
if (a < b)
x = a
else
x = b
つまり、 ifが true、そうでない場合(cond ? a : b)
の値を持ちます。a
cond
b
? マクロとは関係ありません。これは三項演算子です。これは if-else 演算子に似ています。
簡単な例:
c = (a < b ? a : b)
このコードは、a<b
が真の場合は a が c に割り当てられ、a<b
が偽の場合は b が c に割り当てられることを示しています。「三項演算子」をグーグルで検索すると、さらに読むことができます。