1

私は学生であり、私の先生は私に与えてくれました、そして運動はすでに勉強のために解決されました、彼の運動で私はこの行を見ます:

 #define MIN(a,b) ((a) < (b) ? (a) : (b))

これまで#defineを使用したことはありません。

私は何を理解していません:

((a) < (b) ? (a) : (b))

を意味する。

'?'のように見えます よくわからない比較者でした。誰かが私を助けることができますか?

4

2 に答える 2

7

条件演算子(または三項演算子)と呼ばれます

#define MIN(a,b) ((a) < (b) ? (a) : (b))

意味:

if ((a) < (b)){   
  return a;  
} else {   
  return b; 
}

だからあなたがするなら:

int test = MIN(5,10);

テストは5になります

wikiページにリンクする問題:http://goo.gl/bw2sL

于 2013-02-25T08:40:39.533 に答える
3

#define新しいプリプロセッサマクロを定義します。この場合は、配置した場所にMINコードを配置します。aおよびb「変数」は、入力としてマクロに指定したものに置き換えられます。

 #define MIN(a,b) ((a) < (b) ? (a) : (b))

 MIN(5,6);
 //gets expanded to
 ((5) < (6) ? (5) : (6))

実際の式では、三項演算子を使用して、式の評価に応じてAまたはBのいずれかを返します。詳細については、次を参照してください。

http://en.cppreference.com/w/cpp/language/operator_other

最後に、質問にc ++でマークを付けたときに、マクロ以外のmax関数とmin関数を検討してください。

#include <algorithm>
...
int i=std::min(5,6);
于 2013-02-25T08:40:51.597 に答える