Printf dengan Operator Increment pada Bahasa C
Pada artikel ini akan dijelaskan tentang undefined behavior pada bahasa C, serta bagaimana kondisi eksekusi program dari operator printf terhadap operator increment pada bahasas C. Sebelum lanjut, perhatikan contoh penggalan program berikut ini dan perkirakan hasil output-nya.
Sebelum memahami lebih dalam materi tentang Printf dengan Operator Increment pada Bahasa C, terlebih dahulu pelajari materi tentang: Titik Sekuensial Bahasa C dan Fungsinya [klik], Penjumlahan Tanpa Operator Aritmatika Bahasa C [klik], dan Perbandingan Bahasa C dan Fungsinya [klik].
printf("%d %d %d", i, ++i, i++);
Pada contoh penggalan program sebelumnya, akan dipanggil behavior yang tidak terdefinisi oleh kedua referensi 'i' dan 'i++' pada list argument. Program tersebut tidak dapat mendefinisikan perintah argumen yang akan dievaluasi. Kompilator yang berbeda mungkin akan memiliki pendekatan yang berbeda pula pada hasil output. Sebuah kompilator tunggal juga memilih perintah berbeda pada waktu yang berbeda. Contoh, program berikut memiliki tiga statement printf yang dapat menyebabkan munculnya behavior yang tidak terdefinisi.
Baca Juga:
Contoh:
// Ketiga statement printf()
// pada kode program bahasa C
// tersebut akan menyebabkan
// kondisi tak terduga pada
// nilai output program
#include <stdio.h>
int main()
{
volatile int a = 10;
printf("\n %d %d", a, a++);
a = 10;
printf("\n %d %d", a++, a);
a = 10;
printf("\n %d %d %d ", a, a++, ++a);
return 0;
}
Namun demikian, tidak direkomendasikan untuk menggunakan dua atau lebih operator increment dalam satu statement.
Referensi Tambahan:
- Variabel Panjang Argumen Untuk Makro pada Bahasa C [klik]
- Fakta dan Penjelasan Makro Multibaris pada Bahasa C [klik]
- Fakta dan Penjelasan Makro Offset pada Bahasa C [klik]
- Penjelasan Singkat, Makro Prediksi Cabang pada GCC [klik]
- 2 Perbedaan Utama #define dan const pada Bahasa C [klik]
- Perbedaan stdio.h dan stdlib.h pada Bahasa C [klik]
- Cara Sederhana Mencetak Nama Variabel pada Bahasa C [klik]
Artikel ini didedikasikan kepada: Akmal Mahardika, Alya Salma Nuriasenda, Anabella Dhara Agusta, Atika Intan Putri Azzahra, dan Bagas Setyadi.
Apa yang dimaksud dengan undefined behavior pada bahasa pemrograman C?
BalasHapusDalam bahasa pemrograman komputer, perilaku tidak terdefinisi atau undefined behavior adalah hasil dari proses eksekusi program yang perilakunya tidak dapat dirediksi hasil keluarannya, dan tentunya tetap dalam spesifikasi bahasa yang dipatuhi oleh kode komputer.
HapusSebenarnya perilati tidak terdefinisi atau perilaku keacakkan pada hasil keluaran output tersebut bukanlah sesuai yang bersifat random, tapi lebih pada spesifikasi dari mesin yang digunakan dalam mengeksekusi kode program tersebut.
HapusKarena tidak ada yang namanya perilaku tidak terdefinisi dari suatu bahasa pemrograman.
Undefined behavior sebenarnya lebih pada kekurangan atau keterbatasan dari bahasa pemrograman tersebut untuk dapat menghubungkan antara maksud atau kemauan dari programmer terhadap kemampuan dari mesin.
BalasHapusJika sebuah mesin bisa berprilaku tidak terdefinisi diluar dari perintah program yang diberikan oleh programmer, maka bisa jadi algoritma yang tercipta tersebut adalah bentuk primitif dari kecerdasan mesin itu sendiri, yang menurut pemahaman saait ini masih mustahil.
BalasHapus