logo

# og ## Operatører i C

Stringiseringsoperator (#)

Det strengoperator (#) er en præprocessor-operator, der får det tilsvarende faktiske argument til at blive indesluttet i dobbelte anførselstegn. Operatoren #, som generelt kaldes strenge operatør, forvandler argumentet det går forud til et citeret streng . Det er også kendt som strengningsoperatoren.

Det bruges generelt med makroer i C.



java streng klasse

Eksempel

Følgende C-kode demonstrerer brugen af ​​Stringizing-operatoren (#).

C








>

>

Produktion

geeksforgeeks>

Forklaring

Den følgende præprocessor vender linjen printf(mkstr(geeksforgeeks)); into printf(geeksforgeeks);

Token-indsæt operator (##)

Det Token-indsæt operator (##) tillader tokens, der bruges som faktiske argumenter, at blive sammenkædet for at danne andre tokens. Det er ofte nyttigt at flette to tokens til én, mens makroer udvides. Dette kaldes token pasting eller token-sammenkædning.

hashtabel versus hashmap

'##'-forbehandlingsoperatøren udfører token-indsættelse. Når en makro udvides, kombineres de to tokens på hver side af hver '##'-operator til et enkelt token, som derefter erstatter '##' og de to originale tokens i makroudvidelsen.

Eksempler

Den følgende C-kode demonstrerer brugen af ​​token-indsæt-operatoren (##).

værdi af streng

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

>

>

Produktion

30>

Forklaring

cassidy hutchinson uddannelse

Præprocessoren transformerer printf(%d, concat(x, y)); ind i printf(%d, xy);

Anvendelse af token-indsæt-operator (##)

## giver en måde at sammenkæde faktiske argumenter under makroudvidelse. Hvis en parameter i erstatningsteksten støder op til en ##, erstattes parameteren af ​​det faktiske argument, ## og det omgivende hvide mellemrum fjernes, og resultatet scannes igen.