[ HTML ] [ Java ] [ Bahasa C ]


Senin, Mei 03, 2021

Operator Stringsizing dan Tokenpasting pada Bahasa C

Artikel ini akan menjelaskan perbedaan antara operator stringsizing (#) dan operator tokenpasting (##) pada bahasa pemrograman 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. 

Contoh: 
satu, preprosesor berikut ini mengubah baris printf(mkstr(makannasipadang)); menjadi printf("makannasipadang");.

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

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

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

Contoh:
satu, Preprosesor mentransformasi printf("%d,concat(x,y)"); menjadi printf ("%d", xy);.

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

5 komentar:

  1. Apa yang dimaksud dengan operator token pasting dalam bahasa C?

    BalasHapus
    Balasan
    1. Operator 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.

      Hapus
    2. Simbol operator tokenpasting adalah ##

      Hapus
  2. Apa yang dimaksud dengan stringsizing pada bahasa C?

    BalasHapus
    Balasan
    1. Operator 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

Respon komentar 7 x 24 jam, so please be patient :D