ステートメント式

C 複合ステートメントは、中括弧で囲まれたス テートメントのシーケンスです。 GNU C では、括弧内の複合ステートメントは、ステートメント式 内の ステートメントとして使用することができます。この構成は GNU C の直交拡張であり、現在のところ、IBM の C++ でのみサポートされています。

         .--------------.
         V              |
>>-(--{----statement--;-+--}--)--------------------------------><
 
 

ステートメント式の値は、構成全体の中で最後に発生する単純式の値です。 最後のステートメントが式でない場合、構成は void 型になり、値を持ちません。

このフィーチャーを typeof 演算子と組み合わせると、各オペランドが一度だけ評価される 関数に似た複雑なマクロを作成することができます。 次に例を示します。

#define SWAP(a,b) ( {__typeof__(a) temp; temp=a; a=b; b=temp;} )

関連参照

IBM Copyright 2003