C‎ > ‎

Increment Operator

Increment dan decrement operator di C digunakan untuk menyederhanakan penggunaan perintah penambahan_dengan_nilai_satu dan pengurangan_dengan_nilai_satu di C.

Anda akan sering sekali menggunakan perintah i:= i + 1 di Pascal, atau i=i+1 di C, dan ini dapat disingkat hanya dengan menggunakan perintah i++. Perhatikan Kode Sumber dibawah untuk lebih jelasnya.

Ada dua jenis increment: i++ dan ++i.
  • i++ artinya nilai i lama dulu di assign, baru di increment.
  • ++i artinya increment dulu nilai i baru di assign.

Kode Sumber


#include <stdio.h>
int main(){
int x,y,z;
x=2;
y=3;
z=x++ + y--;
printf("x=%d,y=%d,z=%d\n",x,y,z);
z=y++ * y ;
printf("x=%d,y=%d,z=%d\n",x,y,z);
z=++y * y ;
printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0;
}


Output

x=3,y=2,z=5
x=3,y=3,z=4
x=3,y=4,z=16


Penjelasan

  • z=x++ artinya adalah nilai z diisi dengan nilai x sekarang, lalu kemudian baru nilai x di-increment
  • dengan memperhatikan tiga baris perintah ini, Anda akan mengerti bahwa increment/decrement akan dilakukan setelah printf dieksekusi.
  • perintah
    z=x++ + y--;

    berarti z = 2++ + 3-- karena nilai awal x adalah 2 dan nilai awal y adalah 3.
    z akan bernilai 5 (diisi 2 oleh x dan diisi 3 oleh y).
    Saat akan mencetak di layar dengan perintah printf,
    • x bernilai 3, karena nilai awalnya 2 dan kemudian di-increment 1
    • y bernilai 2, karena nilai awalnya 3 dan kemudian di-decrement 1
    • output printf ini tercetak di layar pada baris 1
    • ingat diujung printf ada escape-sequence \n
  • perintah
    z=y++ * y ;
    ini agak tricky, karena kebanyakan mahasiswa terjebak di sini. Variable x tidak digunakan di sini. Nilai awal variable y adalah 2 (seperti terlihat di output baris 1)
    • z diisi oleh nilai y lama (yaitu 2) kemudian dikalikan dengan nilai y
    • yang meragukan adalah ... apakah nilai y yang menjadi operan kedua tersebut masih bernilai 2 atau sudah merupakan nilai hasil increment pada operan pertama?
    • ternyata z bernilai 4, artinya: z = 2++ * 2, bukanlah z=2++ * 3 (kebanyakan mahasiswa berasumsi seperti ini).
    • kesimpulan: penambahan dilakukan setelah semua operasi dilakukan.
    • output di layar untuk baris kedua adalah x=3 (karena tidak terjadi perubahan nilai x); y = 3 karena ada operasi increment y; lalu z adalah 4 (y kali y, dua kali dua)
  • perintah ketiga ini lebih menjebak, karena penggunaan ++y berarti increment dilakukan terlebih dahulu sebelum di assign
    z=++y * y ;
    • kita tahu bahwa y lama bernilai 3 (dari output baris 2)
    • nilai x tidak berubah, karena tidak diotak atik
    • nilai z?
    • nilai z adalah ++y * y, berarti y nya di plus-plus dulu baru di assign ke z, berarti z = ++3 * y.
    • hati-hati, karena y di sini banyak yang menyangka masih 3, tapi ternyata perintah ++y tadi mengakibatkan nilai y menjadi 4 terlebih dahulu
    • berarti z adalah ++3 * 4, bukanlah ++3 * 3 atawa 4 * 3 = 12
    • nilai z yang benar adalah ++3 * 4, yaitu 4 * 4, yaitu 16
    • nilai y sekarang bertambah satu, makanya tampilan di layar pada baris ketiga adalah x=3, y=4, z=16
  • Selamat pusing :D






ċ
Muhammad Jazman,
15 Dec 2010, 09:46
Comments