Di internet, sudah banyak referensi dan tulisan yang membahas pemrograman — khususnya bahasa C — secara sistematis dan lengkap. Tulisan ini saya susun sebagai catatan pribadi, dan semoga tetap bermanfaat bagi siapa pun yang membacanya.

Operand vs Operator
Dalam bahasa C terdapat 2 istilah penting, yaitu Operand dan Operator. Operand adalah nilai atau variabel yang digunakan pada suatu operasi, sedangkan operator adalah simbol atau tanda untuk melakukan operasi pada operand. Sebagai contoh:
int a = 5;
int b = 2;
int c = a + b;
Pada baris pertama: int a = 5
,
5
adalah operand dari operator =
, sedangkan a
adalah target penugasan (left-value).
Pada baris kedua: int b = 2
,
2
adalah operand dari operator =
, sedangkan b
adalah target penugasan (left-value).
Pada baris ketiga: int c = a + b
,
a
dan b
adalah operand dari operator +
, sedangkan c
adalah target penugasan (left-value).
Jenis-Jenis Operator Berdasarkan Jumlah Operand
Berdasarkan jumlah operand-nya, operator dalam pemrograman dapat dibagi menjadi tiga jenis:
1. Unary Operator (1 Operand)
Operator yang bekerja hanya pada 1 operand.
Contoh:
int a = -5;
bool b = !true;
int c = ++a;
-
,!
, dan++
adalah operator unary.- operand-nya masing-masing adalah
5
,true
,a
.
2. Binary Operator (2 Operand)
Operator yang bekerja pada dua operand.
Contoh:
int b = 5 + 3;
+
adalah operator binary.- Operand-nya adalah
5
dan3
.
3. Ternary Operator (3 Operand)
Operator yang bekerja pada tiga operand. Hanya ada satu contoh yang populer pada operator jenis ini, yaitu: conditional (ternary) operator ? :
.
Contoh:
bool c = (a ==b) ? true : false;
- Operand 1: kondisi
(a == b)
- Operand 2: hasil jika kondisi benar (
true
) - Operand 3: hasil jika kondisi salah (
false
) - Operator ternary hanya terdiri dari dua simbol yaitu:
?
dan:
Operator Aritmatika (Arithmetic Operators)
Operator aritmatika digunakan untuk melakukan operasi matematika dasar seperti: penjumlahan, pengurangan, perkalian, pembagian dan modulus (sisa bagi).
Daftar operator aritmatika:
Operator | Fungsi | Contoh |
---|---|---|
+ | Menjumlahkan dua operand | a + b |
- | Mengurangkan dua operand | a - b |
* | Mengalikan dua operand | a * b |
/ | Membagikan dua operand | a / b |
% | Menghasilkan sisa pembagian | a % b |
Contoh dalam bahasa C:
#include <stdio.h>
int main(void) {
int a = 10, b = 2;
int penjumlahan = a + b;
int pengurangan = a - b;
int perkalian = a * b;
int pembagian = a / b;
int modulus = a % b;
printf("%d + %d = %d\n", a, b, penjumlahan);
printf("%d - %d = %d\n", a, b, pengurangan);
printf("%d * %d = %d\n", a, b, perkalian);
printf("%d / %d = %d\n", a, b, pembagian);
printf("%d %% %d = %d\n", a, b, modulus);
return 0;
}

Operator Perbandingan (Relational/Comparison Operators)
Operator perbandingan digunakan untuk membandingkan dua nilai. Misalnya: apakah nilai pada variabel a
lebih besar dari variabel b
?
Daftar operator berbandingan:
Operator | Penjelasan | Contoh |
---|---|---|
== | Sama dengan | a == b |
!= | Tidak sama dengan | a != b |
> | Lebih besar dari | a > b |
< | Lebih kecil dari | a < b |
>= | Lebih besar atau sama dengan | a >= b |
<= | Lebih kecil atau sama dengan | a <= b |
Operator-operator ini akan menghasilkan kondisi logika berupa true
atau false
. Namun karena bahasa c tidak memiliki tipe data boolean bawaan (sebelum C99), hasilnya dikonversi ke int dengan nilai:
- 1 untuk true
- 0 untuk false
Contoh dalam bahasa C:
#include <stdio.h>
int main(void) {
int a = 5, b = 3;
int sama_dengan = 5 == 3;
int tidak_sama_dengan = 5 != 3;
int lebih_besar = 5 > 3;
int lebih_kecil = 5 < 3;
int lebih_besar_sama_dengan = 5 >= 3;
int lebih_kecil_sama_dengan = 5 <= 3;
printf("%d == %d\t: %d\n", a, b, sama_dengan);
printf("%d != %d\t: %d\n", a, b, tidak_sama_dengan);
printf("%d > %d\t: %d\n", a, b, lebih_besar);
printf("%d < %d\t: %d\n", a, b, lebih_kecil);
printf("%d >= %d\t: %d\n", a, b, lebih_besar_sama_dengan);
printf("%d <= %d\t: %d\n", a, b, lebih_kecil_sama_dengan);
return 0;
}

Operator Logika (Logical Operators)
Operator logika adalah operator yang digunakan untuk menggabungkan dua atau lebih kondisi boolean (true atau false) untuk menghasilkan sebuah keputusan logika.
Daftar operator logika:
Operator | Penjelasan | Contoh |
---|---|---|
&& | AND logika, bernilai true jika kedua operand bernilai true | a && b |
|| | OR logika, bernilai true jika salah satu atau kedua operand bernilai true | a || b |
! | NOT logika, membalikkan nilai logika | !a |
Contoh dalam bahasa C:
#include <stdio.h>
int main(void) {
int a = 5, b = 2;
int hasil_and = (a > b) && (b < a);
int hasil_or = (a > b) || (a < b);
int hasil_not = !(a == b);
printf("(a > b) && (b < a)\t: %d\n", hasil_and);
printf("(a > b) || (a < b)\t: %d\n", hasil_or);
printf("!(a == b)\t\t: %d\n", hasil_not);
return 0;
}

Untuk memperdalam pemahaman tentang operator logika, silakan kunjungi tautan berikut: https://id.wikipedia.org/wiki/Tabel_kebenaran.
Operator Penugasan (Assignment Operators)
Operator penugasan digunakan untuk memperbarui nilai dari sebuah variabel. Operator ini menempatkan nilai di sisi kanan ke variabel di sisi kiri.
Operator penugasan yang paling dasar adalah =
. Namun, terdapat juga operator penugasan gabungan yang menggabungkan operasi aritmatika/logika dengan penugasan.
Daftar operator penugasan:
Operator | Penjelasan | Contoh | Setara dengan |
---|---|---|---|
= | Penugasan dasar | a = 10 | — |
+= | Menambahkan lalu menugaskan | a += 2 | a = a + 2 |
-= | Mengurangi lalu menugaskan | a -= 2 | a = a - 2 |
*= | Mengalikan lalu menugaskan | a *= 2 | a = a * 2 |
/= | Membagi lalu menugaskan | a /= 2 | a = a / 2 |
%= | Sisa bagi (modulo) lalu menugaskan | a %= 2 | a = a % 2 |
Contoh dalam bahasa C:
#include <stdio.h>
int main(void) {
int a = 10;
printf("a = %d\n", a);
int tambah_sama_dengan = a += 2;
int kurang_sama_dengan = a -= 2;
int kali_sama_dengan = a *= 2;
int bagi_sama_dengan = a /= 2;
int modulo_sama_dengan = a %= 2;
printf("a += 2\t: %d\n", tambah_sama_dengan);
printf("a -= 2\t: %d\n", kurang_sama_dengan);
printf("a *= 2\t: %d\n", kali_sama_dengan);
printf("a /= 2\t: %d\n", bagi_sama_dengan);
printf("a %= 2\t: %d\n", modulo_sama_dengan);
return 0;
}

Operator Bitwise
Operator bitwise digunakan untuk melakukan operasi logika terhadap bilangan dalam bentuk bit-bit biner. Operator ini bekerja dengan membandingkan atau memodifikasi bit-bit individual dari operand.
Daftar operator bitwise:
Operator | Penjelasan | Contoh | Biner | Hasil (Biner) | Hasil (Desimal) |
---|---|---|---|---|---|
& | AND bitwise, melakukan operasi AND pada setiap bit dari dua operand | 8 & 4 | 1000 & 0100 | 0000 | 0 |
| | OR bitwise, melakukan operasi OR pada setiap bit dari dua operand | 8 | 4 | 1000 | 0100 | 1100 | 12 |
^ | XOR bitwise, melakukan operasi XOR pada setiap bit dari dua operand | 8 ^ 4 | 1000 ^ 0100 | 1100 | 12 |
~ | NOT bitwise, membalik setiap bit | ~8 | ~00001000 | 11110111 | -9 (two complement) |
<< | Left shift, menggeser bit ke kiri sebanyak n posisi. Setiap shift kiri berarti dikali 2 | 8 << 1 | 00001000 << 1 | 00010000 | 16 |
>> | Right shift, menggeser bit ke kanan sebanyak n posisi. Setiap shift kanan berarti dibagi 2 | 8 >> 1 | 00001000 >> 1 | 00000100 | 4 |
Contoh dalam bahasa C:
#include <stdio.h>
int main(void) {
unsigned char a = 12; // 0000 1100
unsigned char b = 5; // 0000 0101
printf("a = %d, b = %d\n", a, b);
unsigned char and_bitwise = a & b; // 0000 0100
printf("a & b = %d\n", and_bitwise);
unsigned char or_bitwise = a | b; // 0000 1101
printf("a | b = %d\n", or_bitwise);
unsigned char xor_bitwise = a ^ b; // 0000 1001
printf("a ^ b = %d\n", xor_bitwise);
unsigned char not_bitwise = ~a; // 1111 0011
printf("~a = %d\n", not_bitwise);
int not_bitwise_signed = ~a;
printf("~a = %d (two's complements)\n", not_bitwise_signed);
unsigned char left_shift = a << 1; // 0001 1000
printf("a << 1 = %d\n", left_shift);
unsigned char right_shift = a >> 1; // 0000 0110
printf("a >> 1 = %d\n", right_shift);
return 0;
}

Operator Ternary (Conditional Operator)
Operator ternary adalah operator kondisional singkat yang digunakan untuk mengevaluasi ekspresi logika dan mengembalikan salah satu dari dua nilai, tergantung pada kondisi yang diberikan. Operator ini sering digunakan sebagai pengganti struktur if-else
sederhana.
Sintaks:
kondisi ? nilai_jika_benar : nilai_jika_salah;
Contoh dalam bahasa c:
#include <stdio.h>
int main(void) {
int a = 15;
int b = 20;
int max;
max = (a > b) ? a : b;
printf("Nilai max adalah: %d\n", max);
return 0;
}

Operator Koma (Comma Operator)
Operator koma dalam bahasa C digunakan untuk memisahkan dua atau lebih ekspresi, dan mengevaluasinya dari kiri ke kanan. Nalai dari keseluruhan ekspresi adalah nilai dari ekspresi terakhir.
Sintaks umum:
ekspresi1, ekspresi2, ..., ekspresiN;
- Semua ekspresi dievaluasi dari kiri ke kanan.
- Hanya nilai ekspresi terakhir yang dikembalikan.
Contoh dalam bahasa C:
#include <stdio.h>
int main(void) {
int a = 10;
int b = 5;
int c;
int d = (c = (a + b) * 2, c * 5);
printf("Nilai dari variabel d adalah: %d\n", d);
return 0;
}
Penjelasan Per Baris Penting:
int d = (c = (a + b) * 2, c * 5);
mengandung operator koma (,
), yang memisahkan dua ekpresi:
Ekspresi pertama:
a + b = 10 + 5 = 15
15 * 2 = 30
- Hasil disimpan ke
c
→c = 30
Ekspresi kedua:
c * 5 = 30 x 5 = 150
- Nilai ini yang menjadi nilai akhir dari ekspresi koma, dan disimpan ke
d
.

Operator Increment dan Decrement
Operator increment dan decrement adalah jenis operator unary yang digunakan untuk menambah atau mengurangi nilai variabel sebanyak 1. Operator ini sebenarnya adalah penulisan singkat dari operasi a = a + 1
atau a = a - 1
.
Berdasarkan bentuknya, operator ini dibagi menjadi dua yaitu Prefix (++x atau --x) dan Postfix (x++ atau x--). Prefix artinya nilai ditambah atau dikurangi lebih dulu baru ditampilkan sedangkan postfix nilai tampilkan lebih dulu baru ditambah atau dikurangi.
Contoh dalam bahasa C:
#include <stdio.h>
int main(void){
// increment (++)
int x = 10, y = 10;
int pre_increment = ++x;
printf("Nilai prefix increment pada variabel x adalah: %d\n", pre_increment);
int post_increment = y++;
printf("Nilai postfix increment pada variabel y adalah: %d\n", post_increment);
// decrement (--)
int a = 5, b = 5;
int pre_decrement = --a;
printf("Nilai prefix decrement pada variabel a adalah: %d\n", pre_decrement);
int post_decrement = b--;
printf("Nilai postfix decrement pada variabel b adalah: %d\n", post_decrement);
return 0;
}

Miscellaneous Operators
Miscellaneous Operators adalah jenis operator yang tidak termasuk pada kategori operator utama seperti aritmatika atau logika, tapi sangat penting dalam pemrograman tingkat rendah dan manipulasi memori.
1. Operator sizeof
sizeof
digunakan untuk mengembalikan data berupa ukuran (dalam byte) dari sebuah variabel atau tipe data.
Contoh dalam bahasa C:
#include <stdio.h>
int main(void){
int x = 10;
char hello[] = "Hello world!";
printf("Ukuran tipe data int: %lu byte\n", sizeof(int));
printf("Ukuran tipe data float: %lu byte\n", sizeof(float));
printf("Ukuran tipe data double: %lu byte\n", sizeof(double));
printf("Ukuran tipe data char: %lu byte\n", sizeof(char));
printf("Ukuran variabel x: %lu byte\n", sizeof(x));
printf("Ukuran variabel hello: %lu byte\n", sizeof(hello));
return 0;
}

2. Operator &
(Address-of) dan *
(Dereference)
Operator &
(Address-of) digunakan untuk mengambil alamat memori dari suatu variabel, sedangkan *
(Dereference) digunakan untuk mengambil nilai dari alamat tersebut.
Contoh dalam bahasa C:
#include <stdio.h>
int main(void){
int a = 10;
int *p = &a;
printf("Alamat a: %p\n", &a); // &a -> alamat dari variabel a
printf("Nilai p (alamat a): %p\n", p); // p = &a -> pointer p menyimpan alamat dari a
printf("Nilai dari *p: %d\n", *p); // *p -> mengakses nilai dari alamat yang disimpan oleh p
return 0;
}

Catatan: Setiap kali program dijalankan, alamat memori (p
= &a
) bisa berubah-ubah, tergantung dari alokasi memori oleh sistem operasi.
Sekian, semoga bermanfaat.
CMIIW.