logo

# і ## оператори в C

Оператор стрінгування (#)

The рядковий оператор (#) є оператором препроцесора, який вставляє в нього відповідний фактичний аргумент подвійні лапки. Оператор #, який зазвичай називається нанизувати перетворює аргумент, який йому передує, на a рядок у лапках . Він також відомий як оператор стрингування.

Зазвичай він використовується з макросами в C.



гра pigeon на андроїд

приклад

Наведений нижче код C демонструє використання оператора Stringizing (#).

C








>

java arraylist

>

Вихід

geeksforgeeks>

Пояснення

Наступний препроцесор повертає рядок printf(mkstr(geeksforgeeks)); у printf(geeksforgeeks);

Оператор вставки маркерів (##)

The Оператор вставки маркерів (##) дозволяє об’єднувати маркери, які використовуються як фактичні аргументи, щоб утворювати інші маркери. Часто корисно об’єднати два токени в один під час розширення макросів. Це називається вставленням або конкатенацією маркерів.

Оператор попередньої обробки «##» виконує вставлення маркера. Коли макрос розгортається, два маркери по обидві сторони від кожного оператора «##» об’єднуються в один маркер, який потім замінює «##» і два оригінальні маркери в розгортанні макросу.

Приклади

Наведений нижче код C демонструє використання оператора вставки маркерів (##).

C




git додати все

// 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;> }>

>

>

Вихід

30>

Пояснення

Препроцесор перетворює printf(%d, concat(x, y)); у printf(%d, xy);

Застосування оператора вставки маркерів (##)

## забезпечує спосіб об'єднання фактичних аргументів під час розширення макросу. Якщо параметр у тексті заміни є поруч із ##, параметр замінюється фактичним аргументом, ## і пробіли навколо видаляються, а результат сканується повторно.

статична java