logo

# 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.



javascript pamoka

Pavyzdys

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

C








>

string.formatas java

>

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




Bourne-gain apvalkalas

// 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.

linkedlist java