Artikel ini akan menjelaskan perbedaan antara operator
stringsizing (#) dan operator
tokenpasting (##) pada bahasa pemrograman C.
 |
Ilustrasi Stringsizing dan Tokenpasting Bahasa C |
Operator stringsizing (#)
Operator ini membuat argumen aktual yang sesuai dengan yang dilampirkan dalam tanda kutip ganda. Operator '#' umumnya disebut dengan operator stringizing, yang mengubah argumen yang mendahuluinya menjadi string kutipan.
satu, preprosesor berikut ini mengubah baris printf(mkstr(makannasipadang)); menjadi printf("makannasipadang");.
Contoh:
// Program bahasa C untuk
// mengilustrasikan operator
// (#)
#include <stdio.h>
#define mkstr(s) #s
int main(void)
{
printf(mkstr(makannasipadang));
return 0;
}
Output:
makannasipadang
dua, Pada program berikut, nilai dari 'a' akan diganti oleh makro.
Contoh:
// Program bahasa C untuk
// mengilustrasikan operator
// (#)
#include <iostream>
using namespace std;
#define a 8.3297
int main()
{
cout << "Nilai dari a adalah " << a << endl;
return 0;
}
Output:
Nilai dari a adalah 8.3297
tiga, Program berikut ini menemukan nilai maksimal dari dua angka yang menggunakan makro.
Contoh:
// Program bahasa C untuk
// mengilustrasikan operator
// (#)
#include <iostream>
using namespace std;
#define MAX(i, j) (((i) > (j)) ? i : j)
int main()
{
int a, b;
a = 250;
b = 25;
cout << "Nilai maksimum adalah " << MAX(a, b) << endl;
return 0;
}
Output:
Nilai maksimum adalah 250
Operator tokenpasting (##)
Operator tokenpasting (##) memungkinkan token menggunakan argumen aktual untuk dilakukan penggabungan guna membentuk token yang baru. Operator '##' berguna untuk menggabungkan dua token menjadi satu token baru sambil memperluas nilai makro. Operator '##' digunakan untuk operator tokenpasting. Ketika makro diperluas, maka dua token yang terletak diantara operator '##' akan dikombinasi menjadi satu token, yang kemudian akan mengganti '##' dan dua token asli pada makro yang telah diperluas tersebut.
Preprosesor mentransformasi printf("%d,concat(x,y)"); menjadi printf ("%d", xy);.
Contoh:
// Program bahasa C untuk
// mengilustrasikan operator
// (##)
#include <stdio.h>
#define concat(a, b) a##b
int main(void)
{
int xy = 30;
printf("%d", concat(x, y));
return 0;
}
Output:
30
Penerapan: Operator '##' menyediakan jalan untuk menggabungkan argumen aktual selama perluasan makro dilakukan. Jika sebuah parameter pada teks yang diganti didekatkan dengan operator '##', maka parameter tersebut akan diganti oleh argumen aktual, dan operator '##' yang mengelilinginya akan dihilangkan, dan hasilnya pun akan dibaca ulang oleh program.
Artikel ini didedikasikan kepada: Syafira Nanda Anggraeni, Yosita Cecilia, Zidan Alfian Bahtiar, Achmad Syaefuddin, dan Agung Wicaksono.
Apa yang dimaksud dengan operator token pasting dalam bahasa C?
BalasHapusOperator token pasting adalah salah satu operator yang dimiliki opera preprosesor dalam bahasa C. Operator ini digunakan untuk mengirimkan perintah dari kompilator untuk menambah atau menggabungkan dua token menjadi satu string baru. Operator token pasting digunakan pada operator definisi makro.
HapusSimbol operator tokenpasting adalah ##
HapusApa yang dimaksud dengan stringsizing pada bahasa C?
BalasHapusOperator stringsizing digunakan untuk mengubah token menjadi string dalam bahasa pemrograman C. Operator ini mengubah nilai parameter makro menjadi sebuah string, dimana hal ini akan menyebabkan parameter makro diapit dalam string kutip ganda.
Hapus