logo

C の # および ## 演算子

文字列化演算子 (#)

文字列化演算子 (#) 対応する実引数を で囲むプリプロセッサ演算子です。 二重引用符。 # 演算子。一般に 文字列化する 演算子は、その前にある引数を 引用符で囲まれた文字列 。これは文字列化演算子としても知られています。

通常、C のマクロで使用されます。



それぞれタイプスクリプト

次の C コードは、文字列化演算子 (#) の使用法を示しています。

C








>

ニックのみ
>

出力

geeksforgeeks>

説明

次のプリプロセッサは、行 printf(mkstr(geeksforgeeks)); を返します。 printf(geeksforgeeks) に;

トークン貼り付け演算子 (##)

トークン貼り付け演算子 (##) 実引数として使用されるトークンを連結して他のトークンを形成できるようにします。マクロを展開するときに 2 つのトークンを 1 つにマージすると便利なことがよくあります。これは、トークンの貼り付けまたはトークンの連結と呼ばれます。

「##」前処理演算子はトークンの貼り付けを実行します。マクロが展開されると、各「##」演算子の両側にある 2 つのトークンが 1 つのトークンに結合され、マクロ展開内の「##」と元の 2 つのトークンが置き換えられます。

次の C コードは、トークン貼り付け演算子 (##) の使用法を示しています。

C




// C program to illustrate (##) operator> #include> > // Macro definition using the Token-pasting operator> #define concat(a, b) a##b> int> main(>void>)> {> >int> xy = 30;> > >// Printing the concatenated value of x and y> >printf>(>'%d'>, concat(x, y));> >return> 0;> }>

Excelで在職期間を計算する

>

autocadストレッチコマンド
>

出力

30>

説明

プリプロセッサは printf(%d, concat(x, y)) を変換します。 printf(%d, xy); に

トークン貼り付け演算子の適用 (##)

## は、マクロ展開中に実際の引数を連結する方法を提供します。置換テキスト内のパラメータが ## に隣接している場合、パラメータは実際の引数に置き換えられ、## と周囲の空白が削除され、結果が再スキャンされます。