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.

c
#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:

text
Suhu 38 derajat: potensi demam
Pemeriksaan selesai

Mari kita telaah baris-baris kode di atas:

  1. Baris 4 (int suhu = 38;): variabel suhu diisi 38 sebagai input simulasi.
  2. Baris 6 (if (suhu >= 37)): compiler mengevaluasi suhu >= 37. Karena 38 >= 37 adalah true (hasil 1), blok di dalam if dieksekusi.
  3. Baris 7 (printf(...)): mencetak pesan peringatan karena kondisi terpenuhi.
  4. Baris 9 (printf(...)): tetap dieksekusi tanpa tergantung hasil kondisi—if tidak 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.

c
#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:

text
Stok habis, perlu restock
Program selesai

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

c
#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:

text
Nilai 75: lulus dengan predikat Cukup
Pengguna terdaftar tetapi belum membayar

Pada 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:

  1. Ekspresi di dalam tanda kurung dievaluasi penuh, mengikuti prioritas operator (contoh: && lebih rendah dari >=, jadi a >= 60 && a < 80 diparse sebagai (a >= 60) && (a < 80)).
  2. Hasil akhir dibandingkan dengan 0. Jika bukan 0, kondisi dianggap true.
  3. 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.