Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pernyataan (C)
Pernyataan switch
dan case
membantu mengontrol operasi kondisional dan percabangan yang kompleks. Pernyataan switch
tersebut mentransfer kontrol ke pernyataan dalam isinya.
Sintaks
selection-statement
:
switch (
expression
)
statement
labeled-statement
:
case
constant-expression
:
statement
default
:
statement
Keterangan
Pernyataan switch
menyebabkan kontrol ditransfer ke salah satu labeled-statement
dalam isi pernyataannya, tergantung nilai expression
.
Nilai expression
dan masing-masing constant-expression
harus memiliki jenis integral. constant-expression
harus memiliki nilai integral konstanta yang tidak ambigu pada waktu kompilasi.
Kontrol meneruskan ke pernyataan case
yang nilai constant-expression
cocok dengan nilai expression
. Pernyataan dapat switch
mencakup sejumlah instans case
. Namun, tidak ada dua nilai constant-expression
dalam pernyataan switch
yang sama yang dapat memiliki nilai yang sama. Eksekusi isi pernyataan switch
dimulai pada pernyataan pertama di atau setelah pencocokan labeled-statement
. Eksekusi berlanjut sampai akhir tubuh, atau sampai pernyataan break
mentransfer kontrol keluar dari isi.
Penggunaan pernyataan switch
biasanya terlihat seperti ini:
switch ( expression )
{
// declarations
// . . .
case constant_expression:
// statements executed if the expression equals the
// value of this constant_expression
break;
default:
// statements executed if expression does not equal
// any case constant_expression
}
Anda dapat menggunakan pernyataan break
untuk mengakhiri pemrosesan pernyataan berlabel tertentu dalam pernyataan switch
. Ini bercabang ke akhir pernyataanswitch
. Tanpa break
, program berlanjut ke pernyataan berlabel berikutnya, menjalankan pernyataan sampai break
atau akhir pernyataan tercapai. Kelanjutan ini mungkin diinginkan dalam beberapa situasi.
Pernyataan default
dijalankan jika tidak ada case
constant-expression
nilai yang sama dengan nilai expression
. Jika tidak ada pernyataandefault
, dan tidak ditemukan kecocokan case
, tidak ada pernyataan dalam isi switch
yang dieksekusi. Mungkin ada paling banyak satu pernyataan default
. Pernyataan default
tidak harus berada di akhir. Pernyataan dapat muncul di mana saja dalam isi pernyataan switch
. Label case
atau default
hanya dapat muncul di dalam pernyataan switch
.
Jenis switch
expression
dan case
constant-expression
harus integral. Nilai masing-masing case
constant-expression
harus unik dalam isi pernyataan.
Label case
dan default
dari switch
isi pernyataan hanya signifikan dalam pengujian awal yang menentukan di mana eksekusi dimulai dalam isi pernyataan. switch
pernyataan dapat di-nest. Variabel statis apa pun diinisialisasi sebelum dieksekusi ke dalam pernyataan switch
apa pun.
Catatan
Deklarasi dapat muncul di judul pernyataan majemuk yang membentuk isi switch
, tetapi inisialisasi yang termasuk dalam deklarasi tidak dilakukan. Pernyataan switch
mentransfer kontrol langsung ke pernyataan yang dapat dieksekusi dalam isi, melewati garis yang berisi inisialisasi.
Contoh berikut mengilustrasikan pernyataan switch
:
switch( c )
{
case 'A':
capital_a++;
case 'a':
letter_a++;
default :
total++;
}
Ketiga pernyataan isi switch
dalam contoh ini dijalankan jika c
sama dengan 'A'
, karena tidak ada pernyataan break
yang muncul sebelum case
berikut ini. Kontrol eksekusi ditransfer ke pernyataan pertama (capital_a++;
) dan berlanjut secara berurutan melalui seluruh isi. Jika c
sama dengan 'a'
, letter_a
dan total
dinaikkan. Hanya total
dinaikkan jika c
tidak sama dengan 'A'
atau 'a'
.
switch( i )
{
case -1:
n++;
break;
case 0 :
z++;
break;
case 1 :
p++;
break;
}
Dalam contoh ini, pernyataan break
mengikuti setiap pernyataan isi switch
. Pernyataan break
memaksa keluar dari isi pernyataan setelah satu pernyataan dieksekusi. Jika i
sama dengan -1, hanya n
yang dinaikkan. break
yang mengikuti pernyataan n++;
menyebabkan kontrol eksekusi keluar dari badan pernyataan, melewati pernyataan yang tersisa. Demikian pula, jika i
sama dengan 0, hanya z
yang dinaikkan; jika i
sama dengan 1, hanya p
dinaikkan. Pernyataan break
terakhir tidak sepenuhnya diperlukan, karena kontrol keluar dari isi di akhir pernyataan majemuk. Ini termasuk untuk konsistensi.
Satu pernyataan dapat membawa beberapa label case
, seperti yang ditunjukkan contoh berikut:
switch( c )
{
case 'a' :
case 'b' :
case 'c' :
case 'd' :
case 'e' :
case 'f' : convert_hex(c);
}
Dalam contoh ini, jika constant-expression
sama dengan huruf apa pun antara 'a'
dan 'f'
, convert_hex
fungsi dipanggil.
Khusus Microsoft
Microsoft C tidak membatasi jumlah nilai case
dalam pernyataan switch
. Jumlah hanya dibatasi oleh memori yang tersedia. ANSI C mengharuskan setidaknya 257 label case
diizinkan dalam sebuah pernyataan switch
.
default untuk Microsoft C adalah ekstensi Microsoft yang diaktifkan. Gunakan opsi pengompilasi /Za untuk menonaktifkan ekstensi ini.