C (bahasa pengaturcaraan): Apakah perbezaan antara: ++ a dan a = a + 1?


Jawapan 1:

Tidak ada perbezaan. ++ a, a + = 1, dan a = a + 1 adalah ungkapan yang sama, mengikut definisi (maksudnya, spec bahasa menentukannya dengan cara ini).

Dalam ketiga-tiga kes ini, hasil ungkapan adalah salinan nilai yang akan ditulis ke dalam "a" (a + +, tentu saja, berbeza dengan hasilnya adalah salinan nilai yang dibaca dari "a")

Satu-satunya perbezaan ialah jika "a" adalah ungkapan yang lebih rumit, seperti panggilan fungsi, ia akan dipanggil dua kali dalam "a = a + 1", dan precedence assigment adalah lebih rendah daripada ++, jadi menggunakan penugasan bukan ++ kadang-kadang memerlukan kurungan tambahan: ++ a + + + b lebih mudah ditulis daripada (a + = 1) + (b + = 1) atau (a = a + 1) + (b = b + 1)


Jawapan 2:

++ a dan a + 1 menyerupai yang sama tetapi masalah berlaku apabila anda menggunakan lebih daripada satu pembolehubah.

contoh:

int a = 10, b;

++ a => menaikkan nilai satu demi satu (o / p: a = 11)

a ++ => menaikkan nilai satu demi satu (o / p: a = 11))

b = a ++ => Pertama tentukan nilai a ke a dan kemudian kenaikan 0ne (o / p: a = 11, b = 10)

b = ++ a => Nilai pertama a ditambah oleh satu dan kemudian diberikan kepada b (o / p: a = 11, b = 11)


Jawapan 3:

++ a dan a + 1 menyerupai yang sama tetapi masalah berlaku apabila anda menggunakan lebih daripada satu pembolehubah.

contoh:

int a = 10, b;

++ a => menaikkan nilai satu demi satu (o / p: a = 11)

a ++ => menaikkan nilai satu demi satu (o / p: a = 11))

b = a ++ => Pertama tentukan nilai a ke a dan kemudian kenaikan 0ne (o / p: a = 11, b = 10)

b = ++ a => Nilai pertama a ditambah oleh satu dan kemudian diberikan kepada b (o / p: a = 11, b = 11)


Jawapan 4:

++ a dan a + 1 menyerupai yang sama tetapi masalah berlaku apabila anda menggunakan lebih daripada satu pembolehubah.

contoh:

int a = 10, b;

++ a => menaikkan nilai satu demi satu (o / p: a = 11)

a ++ => menaikkan nilai satu demi satu (o / p: a = 11))

b = a ++ => Pertama tentukan nilai a ke a dan kemudian kenaikan 0ne (o / p: a = 11, b = 10)

b = ++ a => Nilai pertama a ditambah oleh satu dan kemudian diberikan kepada b (o / p: a = 11, b = 11)


Jawapan 5:

++ a dan a + 1 menyerupai yang sama tetapi masalah berlaku apabila anda menggunakan lebih daripada satu pembolehubah.

contoh:

int a = 10, b;

++ a => menaikkan nilai satu demi satu (o / p: a = 11)

a ++ => menaikkan nilai satu demi satu (o / p: a = 11))

b = a ++ => Pertama tentukan nilai a ke a dan kemudian kenaikan 0ne (o / p: a = 11, b = 10)

b = ++ a => Nilai pertama a ditambah oleh satu dan kemudian diberikan kepada b (o / p: a = 11, b = 11)