4

ここでと は何?:意味しますか?

#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )
4

4 に答える 4

13

これは三項演算子です (Objective C がスーパーセットである C や、それを借用した他の言語でも使用できます)。

前の式?が最初に評価されます。ゼロ以外に評価された場合、前の部分式:が全体的な結果として取得されます。それ以外の場合は、コロンの後の部分式:が使用されます。

の両側の部分式:は同じ型である必要があることに注意してください。

MAXまた、引数に副作用がある場合、計算にマクロを使用すると予期しない結果が生じる可能性があることに注意してください。たとえばMAX(++a, --b)、オペランドの 1 つで 2 倍の副作用が発生します。

于 2012-07-29T01:10:05.833 に答える
9

Kjuly が述べたように、それは記号よりも大きい必要があります。これは単なる if ステートメントです。

(a > b) ? a : b

if ais greater than bthenが関数aから返されるか、 if is greater than if ステートメントが false になり、返されます。MAX(a,b)bb

C の三項 (条件付き) 演算子

エヴァンの答えを確認してください

于 2012-07-29T01:09:51.190 に答える
8

?:三項演算子です。意味((a) > (b)) ? (a) : (b)は次のとおりです。

if (a > b)
  return a
else
  return b

ここを参照してください

于 2012-07-29T01:10:23.547 に答える
4

これは、条件の一種の簡略表記です。? b: c.

a が true と評価された場合は b、それ以外の場合は c です。

#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )

基本的に、a が b より大きい場合は a、そうでない場合は b

于 2012-07-29T01:08:49.710 に答える