Ekspresi dalam Bahasa C adalah kombinasi operator dan operand yang menghasilkan nilai. Operand dapat berupa variabel, konstanta, atau literal. Operator dapat berupa operator aritmatika, operator relasional, operator logika, operator bitwise, dan sebagainya.
Jenis-jenis Ekspresi:
Ekspresi Aritmatika:
Digunakan untuk melakukan operasi aritmatika seperti penjumlahan, pengurangan, perkalian, pembagian, dan modulasi.
Contoh: 5 + 3, 10 - 2, 4 * 6, 8 / 2, 12 % 5
Ekspresi Relasional:
Digunakan untuk membandingkan dua nilai dan menghasilkan nilai boolean (benar atau salah).
Contoh: x < y, a > b, c == 10, d != 5, e <= 0
Ekspresi Logika:
Digunakan untuk menggabungkan dua atau lebih ekspresi boolean dengan menggunakan operator logika seperti AND, OR, dan NOT.
Contoh: (x > 0) && (y < 10), (a == 5) || (b != 2), !c
Ekspresi Bitwise:
Digunakan untuk melakukan operasi bitwise pada operand, seperti AND bitwise, OR bitwise, XOR bitwise, dan negasi bitwise.
Contoh: x & y, a | b, c ^ d, ~e
Ekspresi Assignment:
Digunakan untuk menetapkan nilai ke variabel.
Contoh: x = 10, y = a + b, z = c * 2
Prioritas Operator:
Operator dalam Bahasa C memiliki prioritas tertentu yang menentukan urutan evaluasi dalam ekspresi. Operator dengan prioritas lebih tinggi dievaluasi terlebih dahulu.
Anda dapat menggunakan kurung () untuk mengubah urutan evaluasi sesuai kebutuhan.
Contoh penggunaan Ekspresi:
int x = 10;
int y = 5;
int z = x + y; // z = 15
bool b = x > y; // b = true
int c = 2 * (x + y); // c = 30
int d = x & y; // d = 0
printf("z = %d\n", z);
printf("b = %d\n", b);
printf("c = %d\n", c);
printf("d = %d\n", d);
Ekspresi adalah elemen penting dalam Bahasa C yang digunakan untuk melakukan operasi dan menghasilkan nilai. Dengan memahami jenis-jenis ekspresi, prioritas operator, dan cara penggunaannya, Anda dapat menulis program C yang lebih kompleks dan efisien.
Bahasa C memiliki beberapa sifat operator yang menentukan bagaimana operator tersebut bekerja dalam sebuah program. Berikut adalah penjelasan mengenai sifat-sifat operator dalam Bahasa C:
1. berdasarkan jumlah operand
Unary: Operator yang hanya membutuhkan satu operand.
Contoh: x++ (increment), -y (negasi)
Binary: Operator yang membutuhkan dua operand. Contoh: x + y (penjumlahan), a > b (perbandingan)
Ternary: Operator yang membutuhkan tiga operand. Bahasa C hanya memiliki satu operator ternary, yaitu operator conditional (?:).
Contoh: kondisi ? hasil_jika_benar : hasil_jika_salah
2. berdasarkan pengelompokan
Precedence (prioritas): Operator memiliki prioritas tertentu yang menentukan urutan evaluasi dalam ekspresi. Operator dengan prioritas lebih tinggi dievaluasi terlebih dahulu. Contoh: x * y + z akan dihitung sebagai (x * y) + z, karena perkalian memiliki prioritas lebih tinggi daripada penjumlahan.
Associativity (pengelompokan): Operator dengan prioritas yang sama dikelompokkan berdasarkan aturan tertentu.
Left-to-right associative: Dievaluasi dari kiri ke kanan. Contoh: x + y - z dihitung sebagai (x + y) - z.
Right-to-left associative: Dievaluasi dari kanan ke kiri. Contoh: assignment operator (=) bersifat right-to-left associative. x = y = z dihitung sebagai x = (y = z).
3. berdasarkan hasil
Arithmetic operators: Menghasilkan nilai numerik (bilangan bulat atau bilangan riil). Contoh: +, -, *, /
Relational operators: Menghasilkan nilai boolean (benar atau salah). Contoh: <, >, ==
Logical operators: Menghasilkan nilai boolean. Contoh: && (AND), || (OR), ! (NOT)
Bitwise operators: Melakukan operasi bitwise pada operand (operasi level bit). Contoh: & (AND bitwise), | (OR bitwise), ^ (XOR bitwise)
Assignment operators: Digunakan untuk menetapkan nilai ke variabel. Contoh: =, +=, -=
4. efek samping
Side effect: Operator yang selain menghasilkan nilai juga dapat mengubah keadaan program. Contoh: increment (++), decrement (--), assignment (=).
Side effect-free: Operator yang hanya menghasilkan nilai tanpa mengubah keadaan program. Contoh: operator aritmatika, operator perbandingan, operator logika.
Operator penugasan (assignment operator) dalam Bahasa C digunakan untuk menetapkan nilai ke suatu variabel.
Operator Penugasan Sederhana:
Bentuk paling dasar dari operator penugasan adalah tanda sama dengan (=).
int x = 10; // Menetapkan nilai 10 ke variabel x
Operator Penugasan Gabungan:
Bahasa C menyediakan operator penugasan gabungan yang menggabungkan operasi aritmatika dengan penugasan.
+=: Menjumlahkan nilai di sebelah kanan dan kemudian menetapkan hasilnya ke variabel di sebelah kiri.
Contoh :
int x = 5;
x += 3; // x akan menjadi 8 (5 + 3)
-=: Mengurangi nilai di sebelah kanan dari variabel di sebelah kiri dan kemudian menetapkan hasilnya ke variabel.
Contoh:
int y = 10;
y -= 2; // y akan menjadi 8 (10 - 2)
*=: mengalikan nilai di sebelah kanan dengan variabel di sebelah kiri dan kemudian menetapkan hasilnya ke variabel.
Contoh :
int z = 4;
z *= 2; // z akan menjadi 8 (4 * 2)
Operator penugasan gabungan lainnya termasuk /= (pembagian), %= (modulus), <<= (shift left), >>= (shift right), &= (AND bitwise), |= (OR bitwise), dan ^= (XOR bitwise).
Catatan:
Operator penugasan hanya dapat digunakan pada operand yang dapat dimodifikasi (nilai-lvalue).
Operand di sebelah kiri biasanya berupa variabel, sedangkan operand di sebelah kanan bisa berupa variabel, konstanta, atau ekspresi.
Hasil dari operator penugasan adalah nilai dari operand di sebelah kiri setelah penugasan dilakukan.
Operator aritmatika dalam Bahasa C digunakan untuk melakukan operasi matematika dasar pada dua atau lebih operand. Operand dapat berupa variabel, konstanta, atau literal. Operator aritmatika dibagi menjadi beberapa jenis, yaitu:
1. Operator Penjumlahan (+)
Digunakan untuk menjumlahkan dua operand.
Contoh:
int x = 5;
int y = 3;
int z = x + y; // z = 8 (5 + 3)
2. Operator Pengurangan (-)
Digunakan untuk mengurangi operand kedua dari operand pertama.
Contoh:
int a = 10;
int b = 2;
int c = a - b; // c = 8 (10 - 2)
3. Operator Perkalian (*)
Digunakan untuk mengalikan dua operand.
Contoh:
int d = 4;
int e = 5;
int f = d * e; // f = 20 (4 * 5)
4. Operator Pembagian (/)
Digunakan untuk membagi operand pertama dengan operand kedua. Hasil pembagian adalah bilangan bulat.
Contoh:
int g = 15;
int h = 3;
int i = g / h; // i = 5 (15 / 3)
5. Operator Sisa Pembagian (%)
Digunakan untuk mendapatkan sisa pembagian operand pertama dengan operand kedua.
Contoh:
int j = 17;
int k = 4;
int l = j % k; // l = 1 (17 / 4 sisa 1)
1. Operator Increment (++)
Digunakan untuk menambah nilai variabel sebanyak 1.
Contoh:
int m = 1;
m++; // m akan menjadi 2 (m = m + 1)
2. Operator Decrement (--)
Digunakan untuk mengurangi nilai variabel sebanyak 1.
Contoh:
int n = 10;
n--; // n akan menjadi 9 (n = n - 1)
Prioritas Operator Aritmatika:
Operator aritmatika memiliki prioritas tertentu yang menentukan urutan evaluasi dalam ekspresi. Berikut adalah tabel prioritas operator aritmatika dari yang tertinggi ke yang terendah:
Operator Nama
() Kurung
*, /, % Perkalian, Pembagian, Sisa Pembagian
+, - Penjumlahan, Pengurangan
++, -- Increment, Decrement
Operator dengan prioritas lebih tinggi dievaluasi terlebih dahulu. Anda dapat menggunakan kurung () untuk mengubah urutan evaluasi sesuai kebutuhan.
Contoh penggunaan operator aritmatika:
int x = 10 + 5 * 2; // x = 20 (10 + (5 * 2))
int y = 16 / 2 - 3; // y = 5 (16 / (2 - 3))
int z = x++ + y--; // z = 26 (x = 21, y = 4)
Operator Logika:
Operator logika dalam Bahasa C digunakan untuk menggabungkan dua atau lebih ekspresi boolean dan menghasilkan nilai boolean (benar atau salah). Operator logika yang tersedia di Bahasa C adalah:
AND (&&): Menghasilkan true jika kedua operand bernilai true.
OR (||): Menghasilkan true jika salah satu operand bernilai true.
NOT (!): Mengubah nilai boolean operand menjadi kebalikannya.
Contoh:
int x = 10;
int y = 5;
bool a = (x > 0) && (y < 10); // a = true
bool b = (x == 5) || (y == 10); // b = false
bool c = !a; // c = false
Operator Relasional:
Operator relasional dalam Bahasa C digunakan untuk membandingkan dua nilai dan menghasilkan nilai boolean (benar atau salah). Operator relasional yang tersedia di Bahasa C adalah:
Lebih Besar (>): Menghasilkan true jika operand pertama lebih besar dari operand kedua.
Lebih Kecil (<): Menghasilkan true jika operand pertama lebih kecil dari operand kedua.
Sama Dengan (==): Menghasilkan true jika kedua operand memiliki nilai yang sama.
Tidak Sama Dengan (!=): Menghasilkan true jika kedua operand memiliki nilai yang berbeda.
Lebih Besar atau Sama Dengan (>=): Menghasilkan true jika operand pertama lebih besar dari atau sama dengan operand kedua.
Lebih Kecil atau Sama Dengan (<=): Menghasilkan true jika operand pertama lebih kecil dari atau sama dengan operand kedua.
Contoh :
int x = 12;
int y = 8;
bool a = x > y; // a = true
bool b = x < y; // b = false
bool c = x == y; // c = false
bool d = x != y; // d = true
bool e = x >= y; // e = true
bool f = x <= y; // f = false
Operator Kesamaan:
Operator kesamaan dalam Bahasa C digunakan untuk memeriksa apakah dua nilai memiliki alamat memori yang sama. Operator kesamaan yang tersedia di Bahasa C adalah:
Sama Dengan (==): Juga dapat digunakan untuk membandingkan alamat memori. Menghasilkan true jika dua nilai memiliki alamat memori yang sama.
Tidak Sama Dengan (!=): Juga dapat digunakan untuk membandingkan alamat memori. Menghasilkan true jika dua nilai memiliki alamat memori yang berbeda.
Contoh:
int x = 10;
int y = x;
int z = 10;
bool a = x == y; // a = true (x dan y memiliki alamat memori yang sama)
bool b = x != z; // b = false (x dan z memiliki nilai yang sama, tetapi alamat memori yang berbeda)
e. Operator Kondisional (Ternary)
Operator kondisional dalam Bahasa C, yang paling sering dikenal dengan operator ternary (?:), digunakan untuk membuat keputusan berdasarkan suatu kondisi. Operator ini memungkinkan Anda untuk mengevaluasi suatu kondisi dan menetapkan nilai yang berbeda berdasarkan hasil evaluasi.
Bentuk Operator Kondisional:
kondisi ? nilai_jika_benar : nilai_jika_salah;
Kondisi: Merupakan ekspresi boolean yang menentukan apakah nilai yang benar atau salah akan ditetapkan.
Nilai_jika_benar: Nilai yang akan ditetapkan jika kondisi bernilai true.
Nilai_jika_salah: Nilai yang akan ditetapkan jika kondisi bernilai false.
Contoh Penggunaan:
int x = 10;
int y = 20;
int terbesar = x > y ? x : y; // terbesar akan menjadi 20 (x lebih kecil dari y)
bool isMasihMuda = usia <= 30;
char pesan = isMasihMuda ? 'Masih Muda' : 'Sudah Tua'; // pesan akan menjadi 'Sudah Tua' (usia > 30)
Keuntungan Operator Kondisional:
Membuat kode lebih ringkas dan mudah dibaca dibandingkan dengan menggunakan pernyataan if-else.
Memungkinkan Anda untuk menetapkan nilai berdasarkan suatu kondisi dalam satu baris kode.
Catatan:
Operator kondisional hanya dapat digunakan untuk menetapkan nilai, bukan untuk menjalankan blok kode yang berbeda.
Jika Anda perlu menjalankan blok kode yang berbeda berdasarkan suatu kondisi, Anda harus menggunakan pernyataan if-else.