Statement if adalah bentuk percabangan paling sederhana di C. Ketika program berjalan, ada kalanya kita ingin sebuah blok kode hanya dieksekusi jika suatu kondisi terpenuhi—misalnya mencetak peringatan ketika suhu tubuh pasien melebihi ambang normal, atau menandai pesanan perlu direstock ketika stok habis. Statement if menyediakan jalur eksekusi bersyarat itu: program mengevaluasi sebuah kondisi, dan bila kondisi tersebut true, blok di dalamnya dieksekusi; bila false, blok tersebut dilewati. Pada chapter ini kita akan menelaah sintaks dasar if, peran kurung kurawal, serta cara menyusun kondisi majemuk memakai operator logika.
Sintaks Dasar if #
Bentuk paling sederhana dari if di C adalah if (ekspresi) statement;. Compiler mengevaluasi ekspresi di dalam tanda kurung. Jika hasil evaluasi tidak sama dengan 0 (artinya true), statement di belakangnya dieksekusi. Jika hasil evaluasi 0 (false), statement dilewati dan eksekusi berlanjut ke baris berikutnya. Berdasarkan ISO/IEC 9899 §6.8.4.1, tanda kurung di sekitar ekspresi bersifat wajib—menulis if ekspresi tanpa kurung adalah syntax error.
#include <stdio.h>
int main(void) {
int suhu = 38;
if (suhu >= 37) {
printf("Suhu %d derajat: potensi demam\n", suhu);
}
printf("Pemeriksaan selesai\n");
return 0;
}Output yang Dihasilkan:
Suhu 38 derajat: potensi demam
Pemeriksaan selesaiMari kita telaah baris-baris kode di atas:
- Baris 4 (
int suhu = 38;): variabelsuhudiisi38sebagai input simulasi. - Baris 6 (
if (suhu >= 37)): compiler mengevaluasisuhu >= 37. Karena38 >= 37adalah true (hasil1), blok di dalamifdieksekusi. - Baris 7 (
printf(...)): mencetak pesan peringatan karena kondisi terpenuhi. - Baris 9 (
printf(...)): tetap dieksekusi tanpa tergantung hasil kondisi—iftidak menghentikan alur program setelah bloknya.
if Tanpa Kurung Kurawal #
C memperbolehkan if tanpa kurung kurawal ketika body-nya hanya terdiri dari satu statement. Bentuk ini sering dijumpai pada kode yang sangat pendek, tetapi berbahaya karena mudah disalahbaca: kita mungkin menambahkan baris kedua dengan indentasi yang konsisten tetapi baris itu sebetulnya tidak ikut masuk ke dalam if.
#include <stdio.h>
int main(void) {
int stok = 0;
/* Tanpa kurung kurawal: hanya 1 statement di dalam if */
if (stok == 0)
printf("Stok habis, perlu restock\n");
printf("Program selesai\n");
return 0;
}Output yang Dihasilkan:
Stok habis, perlu restock
Program selesaiPada contoh di atas, hanya printf("Stok habis...") yang berada di dalam if. Statement printf("Program selesai\n") selalu dieksekusi karena if tanpa kurung kurawal hanya mengikat satu statement berikutnya.
if dengan Kondisi Majemuk #
Kondisi di dalam if bisa berupa ekspresi yang lebih kompleks dengan memadukan beberapa perbandingan memakai operator logika && (AND), || (OR), dan ! (NOT). Operator && menuntut kedua operand true agar hasilnya true; operator || cukup salah satu true. Berkat short-circuit evaluation, jika operand pertama && sudah false, operand kedua tidak dievaluasi—efek samping yang berguna untuk menulis kondisi yang aman.
#include <stdio.h>
int main(void) {
int nilai = 75;
/* if dengan ekspresi gabungan */
if (nilai >= 60 && nilai < 80) {
printf("Nilai %d: lulus dengan predikat Cukup\n", nilai);
}
/* if dengan operator logika pada boolean */
int sudah_daftar = 1;
int lunas = 0;
if (sudah_daftar && !lunas) {
printf("Pengguna terdaftar tetapi belum membayar\n");
}
return 0;
}Output yang Dihasilkan:
Nilai 75: lulus dengan predikat Cukup
Pengguna terdaftar tetapi belum membayarPada blok pertama, nilai >= 60 && nilai < 80 dievaluasi sebagai (75 >= 60) && (75 < 80) → 1 && 1 → 1, sehingga cabang true dijalankan. Pada blok kedua, sudah_daftar bernilai 1 (true) dan !lunas bernilai !0 = 1 (true), maka 1 && 1 → 1.
Membaca Kondisi: Aturan Evaluasi #
C mengevaluasi kondisi if sebagai berikut:
- Ekspresi di dalam tanda kurung dievaluasi penuh, mengikuti prioritas operator (contoh:
&&lebih rendah dari>=, jadia >= 60 && a < 80diparse sebagai(a >= 60) && (a < 80)). - Hasil akhir dibandingkan dengan
0. Jika bukan0, kondisi dianggap true. - Jika ada side effect seperti pemanggilan fungsi di dalam ekspresi, side effect itu terjadi selama evaluasi—kecuali sub-ekspresi yang dilewati karena short-circuit.
Dengan pondasi if sederhana ini, chapter berikutnya akan memperluas pola menjadi if-else agar program dapat memilih satu dari dua cabang secara eksplisit.