0

私はこのようなものを見ています:

#define foo(x)   \
    (((a > b) ?  \
      0 : 1),    \
     (c ? 2 : 3), \
     (d ? 4 : 5))

これをどう解釈していいのかわからない。誰かが私を助けることができますか?

4

2 に答える 2

4

基本的に\、ステートメントの終了に関する限り改行は無視される#defineため、コードを記述するたびに改行foo(var)が置き換えられます

((((a > b) ?  
  0 : 1),    
 (c ? 2 : 3), 
 (d ? 4 : 5))

コンマ演算子は、コンマ演算子で区切られたステートメントで構成されるステートメントの最終的な「返される」値が最も右側の値であることを除いて、多くのことを行いません。

これらすべてが説明されてい#defineますab、これは実際にはそれほど有効ではありません.cd#definex

于 2013-02-07T18:43:29.443 に答える
0

コンマ演算子は、すべてのオペランドを評価し、最後のオペランドの値を返します。したがって、abcおよびdが評価され、 がゼロでないf(x)かどうかに応じて、 の結果は 4 または 5 になります。d

于 2013-02-07T18:41:31.977 に答える