logo

# og ## Operatører i C

Stringoperator (#)

De strengoperator (#) er en forprosessoroperatør som gjør at det tilsvarende faktiske argumentet blir innelukket i doble anførselstegn. Operatoren #, som vanligvis kalles strenge operatør, gjør argumentet det går foran til en sitert streng . Det er også kjent som stringification-operatoren.

Det brukes vanligvis med makroer i C.



java streng klasse

Eksempel

Følgende C-kode demonstrerer bruken av Stringizing-operatoren (#).

C








>

>

Produksjon

geeksforgeeks>

Forklaring

Følgende forprosessor snur linjen printf(mkstr(geeksforgeeks)); into printf(geeksforgeeks);

Token-lime-operator (##)

De Token-lime-operator (##) lar tokens brukt som faktiske argumenter bli sammenkoblet for å danne andre tokens. Det er ofte nyttig å slå sammen to tokens til ett mens du utvider makroer. Dette kalles token pasting eller token concatenation.

javascript nærmest

«##»-forbehandlingsoperatøren utfører token-liming. Når en makro utvides, kombineres de to tokenene på hver side av hver '##'-operator til et enkelt token, som deretter erstatter '##' og de to originale tokenene i makroutvidelsen.

Eksempler

Følgende C-kode demonstrerer bruken av token-lime-operatoren (##).

verdien av strengen

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

>

>

Produksjon

30>

Forklaring

eksempler på java-kode

Forprosessoren transformerer printf(%d, concat(x, y)); til printf(%d, xy);

Bruk av token-lime-operator (##)

## gir en måte å sette sammen faktiske argumenter under makroutvidelse. Hvis en parameter i erstatningsteksten er ved siden av en ##, erstattes parameteren av det faktiske argumentet, ## og det omkringliggende mellomrommet fjernes, og resultatet skannes på nytt.