# ir ## operatoriai C

Sujungimo operatorius (#)

The sujungimo operatorius (#) yra išankstinio procesoriaus operatorius, dėl kurio įterpiamas atitinkamas faktinis argumentas dvigubos kabutės. # operatorius, kuris paprastai vadinamas sustyguoti operatorius, prieš jį esantį argumentą paverčia a citata eilutė . Jis taip pat žinomas kaip sutrumpinimo operatorius.

Paprastai jis naudojamas su makrokomandomis C.

Pavyzdys

Šis C kodas parodo operatoriaus Stringizing (#) naudojimą.

C




Išvestis

geeksforgeeks 

Paaiškinimas

Šis išankstinis procesorius paverčia eilutę printf(mkstr(geeksforgeeks)); į printf(geeksforgeeks);

Žetonų įklijavimo operatorius (##)

The Žetonų įklijavimo operatorius (##) leidžia žetonus, naudojamus kaip faktinius argumentus, sujungti, kad susidarytų kiti žetonai. Išplečiant makrokomandas dažnai naudinga sujungti du žetonus į vieną. Tai vadinama žetonų įklijavimu arba žetonų sujungimu.

Išankstinio apdorojimo operatorius „##“ atlieka prieigos rakto įklijavimą. Kai makrokomanda išplečiama, du žetonai, esantys abiejose kiekvienos operatoriaus „##“ pusėse, sujungiami į vieną atpažinimo raktą, kuris pakeičia „##“ ir du pradinius žetonus makrokomandos plėtinyje.

Pavyzdžiai

Šis C kodas parodo, kaip naudojamas Žetonų įklijavimas (##).

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

Išvestis

30 

Paaiškinimas

Pirminis procesorius transformuoja printf(%d, concat(x, y)); į printf(%d, xy);

Žetonų įklijavimo operatoriaus taikymas (##)

## suteikia galimybę sujungti tikrus argumentus makrokomandos išplėtimo metu. Jei pakeitimo tekste esantis parametras yra šalia ##, parametras pakeičiamas tikruoju argumentu, ## ir aplinkiniai tarpai pašalinami, o rezultatas nuskaitomas iš naujo.