目次から探す
3項演算子をマクロで表現する方法
3項演算子は、条件によって異なる値を返すための演算子です。
C言語では、条件式 ? 式1 : 式2
という形式で使用します。
しかし、この3項演算子をマクロで表現することもできます。
マクロを使用することで、短いコードで条件分岐を行うことができます。
マクロを使用した3項演算子の基本的な書き方
まず、マクロを使用した3項演算子の基本的な書き方を見ていきましょう。
以下のようなマクロを定義することで、3項演算子を簡潔に表現することができます。
#define TERNARY(condition, true_value, false_value) ((condition) ? (true_value) : (false_value))
このマクロでは、condition
には条件式を、true_value
には条件が真の場合に返す値を、false_value
には条件が偽の場合に返す値を指定します。
マクロの中では、条件式が真の場合はtrue_value
が、偽の場合はfalse_value
が返されます。
以下に、このマクロを使用したサンプルコードを示します。
#include <stdio.h>
#define TERNARY(condition, true_value, false_value) ((condition) ? (true_value) : (false_value))
int main() {
int num = 10;
int result = TERNARY(num > 5, 100, 200);
printf("result: %d\n", result);
return 0;
}
上記のコードでは、num
が5より大きい場合は100
が、そうでない場合は200
がresult
に代入されます。
実行結果は以下のようになります。
result: 100
マクロを使用した3項演算子の応用例
マクロを使用した3項演算子は、さまざまな場面で活用することができます。
例えば、文字列の比較結果に応じて処理を分岐する場合などです。
以下に、文字列の比較結果に応じてメッセージを表示するサンプルコードを示します。
#include <stdio.h>
#include <string.h>
#define TERNARY(condition, true_value, false_value) ((condition) ? (true_value) : (false_value))
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
const char* message = TERNARY(result == 0, "Same", "Different");
printf("Comparison result: %s\n", message);
return 0;
}
上記のコードでは、strcmp
関数を使用してstr1
とstr2
を比較し、その結果に応じてmessage
に文字列を代入しています。
もし、str1
とstr2
が同じであればSame
が、異なればDifferent
がmessage
に代入されます。
実行結果は以下のようになります。
Comparison result: Different
このように、マクロを使用した3項演算子は、コードによっては可読性を上げられることがあります。
短いコードで条件分岐を行いたい場合には、ぜひマクロを活用してみてください。