Conditional Expression
Ada cara alternatif untuk menulis conditional tanpa harus menulis if-else yang panjang,
terutama jika tujuan kita hanyalah memilih satu dari dua nilai.
bahasa C memungkinkan kita untuk membentuk sebuah conditional expression dengan memberikan ternary operator (?), Operator ini merupakan bentuk dari pernyataan percabangan if-else yang menghasilkan suatu nilai.
Bentuk Umum
expr1 ? expr2 : expr3
expr1 akan di evaluasi terleebih dahulu. Jika hasilnya adalah tidak-nol atau true, kemudian expr2 yang akan di evaluasi, dan itulah yang menjadi nilai dari conditional expression tersebut, sebaliknya jika expr1 bernilai 0 atau false maka expr3 yang akan dievaluasi, dan dialah yang menjadi nilainya.
secara singkatnya
expr1 ? expr2 : expr3
^ ^ ^
[Evaluasi Ini] [Jika true pilih ini] [Jika false pilih ini]
Contoh:
int a = 6;
int b = 7;
// Pilih nilai yang lebih besar antara a atau b
int max = (a > b) ? a : b;
printf("%d", max); // Output: 7
Contoh :
bool isMember;
printf("%s", (isMember) ? "Aku admin kamu member" ? "kamu bukan member")
Ternary Operator memungkinkan kita untuk menulis kode yang lebih ringkas
Best Practice: When to use?
Gunakan saat:
- Logika pemilihannya sederhana (hanya 1 kondisi dengan 2 kemungkinan nilai).
- Ingin melakukan inisialisasi variabel langsung dalam satu baris.
- Ingin menyederhanakan kode agar lebih ringkas (succinct).
Hindari saat:
- Nested Ternary yang Terlalu Dalam: Menumpuk conditional expression di dalam conditional expression lainnya (seperti a ? b : c ? d : e) akan membuat kode sangat sulit dibaca dan rentan memicu bug.
- Logika di dalamnya memerlukan banyak statement atau efek samping (side-effects). Jika sudah membutuhkan banyak instruksi, kembalilah menggunakan struktur blok if-else biasa.