ここでと は何?
を:
意味しますか?
#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
これは三項演算子です (Objective C がスーパーセットである C や、それを借用した他の言語でも使用できます)。
前の式?
が最初に評価されます。ゼロ以外に評価された場合、前の部分式:
が全体的な結果として取得されます。それ以外の場合は、コロンの後の部分式:
が使用されます。
の両側の部分式:
は同じ型である必要があることに注意してください。
MAX
また、引数に副作用がある場合、計算にマクロを使用すると予期しない結果が生じる可能性があることに注意してください。たとえばMAX(++a, --b)
、オペランドの 1 つで 2 倍の副作用が発生します。
Kjuly が述べたように、それは記号よりも大きい必要があります。これは単なる if ステートメントです。
(a > b) ? a : b
if a
is greater than b
thenが関数a
から返されるか、 if is greater than if ステートメントが false になり、返されます。MAX(a,b)
b
b
エヴァンの答えを確認してください
これは、条件の一種の簡略表記です。? b: c.
a が true と評価された場合は b、それ以外の場合は c です。
#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
基本的に、a が b より大きい場合は a、そうでない場合は b