スポンサーリンク
関数マクロ(#define)で判定文を作る
演算子(?と:)を使うことで、
関数マクロ(#define)で判定文を作ることができでます。
例えば、引数が正の数かを判定するマクロです。
判定が真なら1、偽なら0を返します。
#define IS_POSITIVE(a) ((a) > 0 ? 1 : 0)
引数が負の数かを判定するマクロです。
#define IS_NEGATIVE(a) ((a) < 0 ? 1 : 0)
下記のように、引数どうしを掛け算する関数マクロです。
この形式もよく使いますね。
#define MULTI(a, b) ((a) * (b))
スポンサーリンク
サンプルコード
下記がサンプルコードになります。
$ cat sample.c #include <stdio.h> #define IS_POSITIVE(a) ((a) > 0 ? 1 : 0) #define IS_NEGATIVE(a) ((a) < 0 ? 1 : 0) #define MULTI(a, b) ((a) * (b)) int main(){ if(IS_POSITIVE(3)){ printf("3は正の数\n"); } if(IS_NEGATIVE(-4)){ printf("-4は負の数\n"); } printf("3と4の掛け算は%d\n", MULTI(3, 4)); return 0; }
下記が実行結果になります。
$ gcc -o sample sample.c $ ./sample 3は正の数 -4は負の数 3と4の掛け算は12
スポンサーリンク