Operator Increment dan Decrement

4.2.5 Operator Increment dan Decrement

Kita akan sering menambah atau mengurangi nilai variabel kita dengan 1, karena itu di C# terdapat operator yang khusus untuk hal tersebut yaitu operator increment dan decrement. Dalam kutipan program di bawah:

[kutipan program] perm en = perm en + 1; perm en + = 1; + + per m en; / / bent uk pr efix , oper at or dit ulis sebelum oper and per m en+ + ; / / bent uk post fix , oper at or dit ulis sebelum oper and [/kutipan program]

... kempat statement tersebut melakukan hal yang sama. Begitu juga dengan keempat statement di bawah ini:

[kutipan program] per m en = per m en - 1; per m en - = 1; - - perm en; / / bent uk pr efix , oper at or dit ulis sebelum oper and per m en- - ; / / bent uk post fix , oper at or dit ulis sebelum oper and [/kutipan program]

Terdapat sedikit perbedaan antara bentuk prefix dengan bentuk postfix dari operator ++ dan --. Keduanya akan mengubah nilai operand nya, namun bentuk prefix akan mengembalikan nilai operand setelah dilakukan operasi sedangkan bentuk postfix akan mengembalikan nilai operand sebelum dilakukan operasi. Nilai yang dikembalikan itu tidak dipakai dalam kutipan-kutipan program di atas, namun sekarang coba kita perhatikan program berikut:

[program lengkap] / / Program 4.4 - Pr efix dan post fix

using Syst em ;

class Pr efix Post fix {

st at ic v oid Main( ) {

int var1 = 5; int var2 = 5;

+ + v ar 1; / / m enam bahk an 1 k e v ar 1 var2+ + ; / / m enam bahk an 1 ke var2

Console. Wr it eLine( v ar 1) ; / / ou t pu t 6 Console. Wr it eLine( v ar 2) ; / / ou t pu t 6

Console. Wr it eLine( + + v ar 1) ; / / ou t pu t 7 Console. Wr it eLine( v ar 2 + + ) ; / / ou t pu t 6

Console. Wr it eLine( v ar 1) ; / / ou t pu t 7 Console. Wr it eLine( v ar 2) ; / / ou t pu t 7

} } [/program lengkap]

Ini adalah outputnya:

[console] 6 6 7 6 7

[/console]

Dua statement ini perlu kita analisa lebih lanjut:

[kutipan program] Console. Wr it eLine( + + v ar 1 ) ; / / out put 7 Console. Wr it eLine( v ar 2 + + ) ; / / out put 6 [/kutipan program]

Sebelumnya var1 dan var2 sama-sama bernilai 6. Pada statement pertama var1 nilainya ditambahkan 1 (menjadi 7), dan 7 akan menjadi argument bagi Console.WriteLine(). Namun di statement ke dua walaupun nilai var2 juga dinaikkan dari 6 menjadi 7, yang dikembalikan untuk menjadi argument bagi Console.WriteLine() adalah nilai var2 sebelum dilakukan penambahan yaitu 6. Bukti bahwa pada akhirnya keduanya bernilai 7 ada di pada output.

Ini contoh lainnya:

[kutipan program] int var1 = 5; int var2 = + + var1 * 2; / / var2 ak an ber nilai 6 * 2 int var3 = 5; int v ar 4 = v ar 3+ + * 2; / / v ar 4 ak an ber nilai 5 * 2 [/kutipan program]

Setelah statement-statement di atas dilaksanakan, var1 dan var3 akan bernilai 6, var2 akan bernilai 12, dan var4 akan bernilai 10. Penggunaan operator incement dan decrement sebaiknya tidak berlebihan sebab selain menyulitkan orang untuk membacanya, juga dapat membingungkan compiler! Misalnya kutipan program di bawah ini:

[kutipan program] v ar 3 = v ar 1+ + + + + v ar 2 ; [/kutipan program]

... tidak dapat dipahami compiler. Penggunaan kurung akan menyelesaikan masalah:

[kutipan program] v ar 3 = ( v ar 1+ + ) + ( + + v ar 2) ; [/kutipan program]

Sekarang lihat contoh di bawah ini:

[kutipan program] v ar 2 = ( v ar 1+ + ) + ( + + v ar 1) * ( v ar 1+ + ) ; [/kutipan program]

Walaup un sah-sah saja, penggunaan incrementer dan decrementer sebaiknya dibatasi, sekali untuk setiap variabel dalam suatu statement. Kalau tidak kode kita akan menjadi sulit dimengerti, bahkan oleh kita sendiri!

[latihan mini] • Tuliskan cara mendeklarasikan variabel bernama foo yang memiliki type byte! • Adakah yang salah dalam statement berikut?

[kutipan program] int a; Console. Wr it eLine( a = 100) ; [/kutipan program]

• Adakah yang salah dalam statement berikut?

[kutipan program] Console. Wr it eLine( in t a = 100) ; [/kutipan program]

• byte foo;

• Tidak ada. 100 akan dimasukkan ke a dan a akan menjadi argument bagi Console.WriteLine(). • Ya. Kita tidak boleh mendeklarasikan variabel baru dalam pemanggilan suatu method. [/latihan mini]