Mari kita mulai dengan operator yang paling sederhana, tanda tambah (+). Tanda tambah (+) adalah operator biner - artinya, tanda tambah hanya menghubungkan dua angka, tidak pernah menghubungkan angka ketiga atau lebih.
Oleh karena itu, "1 ditambah 2 ditambah 3" dinyatakan di komputer sebagai:
(1 + 2) + 3 // aor
1 + (2 + 3) // b Walaupun biasanya kita menuliskannya sebagai 1 + 2 + 3, bukan berarti setara dengan 1+2+3 dalam matematika kita.
Jadi apakah 1+2+3 dalam matematika mewakili a atau b?
Jika evaluasi komputer bersifat asosiatif kiri, maka ekspresi ini setara dengan tipe pertama a; jika asosiatif kanan, maka ekspresi ini setara dengan tipe kedua b.
Pengertian sederhana dari 1 + 2 + 3 adalah “menjumlahkan 1, 2, dan 3”. Memang dalam matematika yang kita pelajari adalah menjumlahkan tiga bilangan. Namun dalam bahasa pemrograman, bukan hanya itu saja.
Seperti disebutkan sebelumnya, tanda + tidak dapat beroperasi dengan tiga angka atau lebih, dan hanya dapat berpartisipasi dalam operasi penjumlahan dengan dua angka.
Ngomong-ngomong, plus dan minus adalah operator unary. Meskipun menggunakan simbol yang sama dengan operator biner penjumlahan dan pengurangan, keduanya berbeda, jadi jangan anggap remeh bahwa +4 sebenarnya setara dengan 0+4 mereka tidak setara,
+4 adalah bilangan bulat, tetapi 0+4 adalah ekspresi penjumlahan, yang bernilai tepat +4.
Di java, kita dapat menulis short a = +4, tetapi ketika kita menulis short a = 0 + 4, sebuah peringatan akan muncul.
Ada contoh lain, juga tentang singkatnya,
pendek b = 1;
pendek b = b + 4; // peringatan
short b += 4; // Tidak ada peringatan. Jadi bagaimana cara kerja 1 + 2 + 3? Dalam bahasa pemrograman arsitektur von Neumann, ada efek samping - saya biasa menyebutnya "ketika proses komputasi komputer berbeda dengan proses berpikir otak pemrogram, itu disebut efek samping" (walaupun itu tidak tertulis seperti ini di buku) Ya, tapi saya selalu berpikir begitu), awalnya Anda mengira akan seperti ini, tapi ternyata komputer tidak melakukan ini, saya menyebutnya efek samping.
Jika Anda sudah membaca “Pernyataan dan Ekspresi” sebelumnya, maka dapat dipahami seperti ini:
1 + 2 adalah ekspresi yang nilai kembaliannya adalah 3. Nilai kembalian ekspresi ini kemudian ditambahkan ke ekspresi lain 3 + 3, dan hasil akhirnya adalah 6.
Kami menulis ulang kode ini menggunakan Pernyataan:
// Hitung 1 + 2 + 3
var a = 1 + 2;
var b = a + 3;Jika kita mengevaluasi ekspresi ini dalam cadel, tidak ada efek samping.
(+(1 2) 3) Jika Anda belum memahaminya, atau contoh ini terlalu istimewa, mari kita ubah ke contoh lain.
5 > 4 > 3 Dalam matematika, persamaan ini bernilai benar. Saat kita menulis kode ini dalam bahasa C, hasilnya memang salah.
Alasannya sama seperti di atas. Tanda lebih besar (>) adalah operasi biner. Tidak dapat membandingkan tiga angka secara langsung. Hasil yang dikembalikan oleh 5 > 4 adalah benar. Jika benar dibandingkan dengan 3, maka benar diubah menjadi 1. yaitu 1 > 3, hasil akhirnya tentu saja salah.
Singkatnya, kita kembali ke sudut pandang dalam artikel "Pernyataan dan Ekspresi": setiap ekspresi dalam bahasa pemrograman memiliki nilai.
Walaupun operator dalam bahasa pemrograman sama dengan operator dalam matematika, namun keduanya tidak setara. Saat Anda menulis sebuah program, tulislah agar orang dapat membacanya; saat Anda men-debug suatu program, Anda harus belajar memikirkan arti kode tersebut dengan cara komputer.
Saya terbiasa memahami operator sebagai fungsi. Misalnya, 2 + 5 sebenarnya adalah add(2, 5) atau 2.add(5). Apakah saya akan memberi tahu Anda secara diam-diam, "Faktanya, banyak bahasa melakukan hal ini."