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 return
mengakhiri eksekusi suatu fungsi dan mengembalikan kontrol ke fungsi panggilan. Eksekusi dilanjutkan dalam fungsi panggilan pada titik segera setelah panggilan. Pernyataan return
dapat mengembalikan nilai ke fungsi panggilan. Untuk informasi selengkapnya, lihat Tipe return.
Sintaks
jump-statement
:
return
expression
Memilih;
Nilai expression
, jika ada, dikembalikan ke fungsi panggilan. Jika expression
dihilangkan, nilai pengembalian fungsi tidak ditentukan. Ekspresi, jika ada, dievaluasi dan dikonversi ke tipe yang dikembalikan oleh fungsi. Ketika pernyataan return
berisi ekspresi dalam fungsi yang memiliki tipe pengembalian void
, kompilator akan menghasilkan peringatan dan ekspresi tidak dievaluasi.
Jika tidak ada pernyataan return
yang muncul dalam definisi fungsi, kontrol secara otomatis kembali ke fungsi pemanggil setelah pernyataan terakhir dari fungsi yang dipanggil dieksekusi. Dalam hal ini, nilai pengembalian dari fungsi yang dipanggil tidak terdefinisi. Jika fungsi memiliki tipe pengembalian selain void
, maka itu adalah bug yang serius dan kompilator akan mencetak pesan diagnostik peringatan. Jika fungsi memiliki tipe pengembalian void
, perilaku ini boleh saja, tetapi dapat dianggap sebagai gaya yang buruk. Gunakan pernyataan return
biasa untuk memperjelas niat Anda.
Sebagai praktik rekayasa yang baik, selalu tentukan tipe pengembalian untuk fungsi Anda. Jika nilai pengembalian tidak dibutuhkan, deklarasikan bahwa fungsi memiliki tipe pengembalian void
. Jika tipe pengembalian tidak ditentukan, kompilator C akan mengasumsikan tipe pengambalian default int
.
Banyak programmer menggunakan tanda kurung untuk mengapit expression
argumen return
pernyataan. Namun, C tidak memerlukan tanda kurung.
Kompilator dapat mengeluarkan pesan diagnostik peringatan tentang kode yang tidak dapat dijangkau jika kompilator menemukan pernyataan apa pun yang ditempatkan setelah pernyataan return
.
Dalam fungsi main
, pernyataan dan ekspresi return
bersifat opsional. Hal yang terjadi pada nilai yang dikembalikan, jika ditentukan, tergantung pada implementasinya. Khusus Microsoft: Implementasi Microsoft mengembalikan nilai ekspresi ke proses yang menjalankan program, seperti cmd.exe
. Jika tidak ada ekspresi return
yang diberikan, runtime Microsoft C akan mengambalikan nilai yang menunjukkan keberhasilan (0) atau kegagalan (nilai bukan nol).
Contoh
Contoh berikut adalah satu program dalam beberapa bagian. Contoh ini menunjukkan pernyataan return
, dan bagaimana pernyataan itu digunakan untuk mengakhiri eksekusi fungsi, serta secara opsional untuk mengembalikan nilai.
// C_return_statement.c
// Compile using: cl /W4 C_return_statement.c
#include <limits.h> // for INT_MAX
#include <stdio.h> // for printf
long long square( int value )
{
// Cast one operand to long long to force the
// expression to be evaluated as type long long.
// Note that parentheses around the return expression
// are allowed, but not required here.
return ( value * (long long) value );
}
Fungsi square
mengembalikan kuadrat argumennya, dalam tipe yang lebih luas untuk mencegah kesalahan aritmatika. Khusus Microsoft : Dalam implementasi Microsoft C, tipe long long
cukup besar untuk menampung produk dua nilai int
tanpa meluap.
Tanda kurung di sekitar ekspresi return
dalam square
dievaluasi sebagai bagian dari ekspresi dan tidak diwajibkan oleh pernyataan return
.
double ratio( int numerator, int denominator )
{
// Cast one operand to double to force floating-point
// division. Otherwise, integer division is used,
// then the result is converted to the return type.
return numerator / (double) denominator;
}
Fungsi ratio
mengembalikan rasio dua argumen int
sebagai nilai double
floating-point. Ekspresi return
dipaksa untuk menggunakan operasi floating-point dengan mentransmisikan salah satu operand ke double
. Jika tidak, operator pembagian bilangan bulat akan digunakan dan bagian pecahan akan hilang.
void report_square( void )
{
int value = INT_MAX;
long long squared = 0LL;
squared = square( value );
printf( "value = %d, squared = %lld\n", value, squared );
return; // Use an empty expression to return void.
}
Fungsi report_square
memanggil square
dengan nilai parameter INT_MAX
, nilai bilangan bulat bertanda terbesar yang cocok dengan int
. Hasil long long
disimpan dalam squared
, kemudian dicetak. Fungsi report_square
memiliki tipe pengembalian void
, sehingga tidak memiliki ekspresi dalam pernyataan return
.
void report_ratio( int top, int bottom )
{
double fraction = ratio( top, bottom );
printf( "%d / %d = %.16f\n", top, bottom, fraction );
// It's okay to have no return statement for functions
// that have void return types.
}
Fungsi report_ratio
memanggil ratio
dengan nilai parameter 1
dan INT_MAX
. Hasil double
disimpan dalam fraction
, kemudian dicetak. Fungsi report_ratio
memiliki tipe pengembalian void
, sehingga tidak perlu mengembalikan nilai secara eksplisit. Eksekusi report_ratio
"jatuh dari bawah" dan tidak mengembalikan nilai ke pemanggil.
int main()
{
int n = 1;
int x = INT_MAX;
report_square();
report_ratio( n, x );
return 0;
}
Fungsi main
memanggil dua fungsi: report_square
dan report_ratio
. Karena report_square
tidak mengambil parameter dan mengembalikan void
, kita tidak menetapkan hasilnya ke variabel. Demikian juga, report_ratio
mengembalikan void
, jadi kita juga tidak menyimpan nilai pengembaliannya. Setelah setiap pemanggilan fungsi ini, eksekusi dilanjutkan pada pernyataan berikutnya. Kemudian, main
mengembalikan nilai 0
(biasanya digunakan untuk melaporkan keberhasilan) untuk mengakhiri program.
Untuk mengompilasi contoh, buat file kode sumber bernama C_return_statement.c
. Kemudian, salin semua kode contoh dalam urutan seperti yang ditunjukkan. Simpan file, dan kumpulkan di Jendela prompt perintah pengembang dengan menggunakan perintah:
cl /W4 C_return_statement.c
Lalu, untuk menjalankan kode contoh, masukkan C_return_statement.exe
di prompt perintah. Output dari contoh tersebut akan terlihat seperti ini:
value = 2147483647, squared = 4611686014132420609
1 / 2147483647 = 0.0000000004656613