Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Keutamaan Operator Berbeza daripada Susunan Penilaian dalam Pengaturcaraan?

Bagaimanakah Keutamaan Operator Berbeza daripada Susunan Penilaian dalam Pengaturcaraan?

Susan Sarandon
Susan Sarandonasal
2024-12-21 04:31:12958semak imbas

How Does Operator Precedence Differ from the Order of Evaluation in Programming?

Apakah hubungan antara keutamaan pengendali dan susunan penilaian?

Bertentangan dengan pemahaman popular, keutamaan pengendali tidak menentukan sepenuhnya susunan penilaian dalam pengaturcaraan. Walaupun keutamaan mengawal susunan pengiraan nilai, penilaian operan itu sendiri kekal bebas daripada keutamaan.

Contoh:

Pertimbangkan ungkapan x < y < z. Peraturan keutamaan menentukan bahawa ia harus dihuraikan sebagai (x < y) < z. Walau bagaimanapun, mesin tindanan, sebagai contoh, mungkin menilai ungkapan seperti berikut:

push(z);
push(y);
push(x);
test_less();  // compares TOS to TOS(1), pushes result on stack
test_less();  // compares TOS to TOS(1), pushes result on stack

Ini menilai z sebelum x atau y, tetapi masih menilai (x < y) dan membandingkan hasilnya kepada z, sebagai dimaksudkan.

Penilaian dan Kesan Sampingan:

Kesan sampingan, seperti menambah atau mengurangkan pembolehubah, dilaksanakan oleh utas berasingan secara konseptual. Benang ini bercantum pada titik urutan seterusnya. Pertimbangkan ungkapan a = b c;. Ia boleh dilaksanakan seperti berikut:

push(a);
push(b);
push(c+1);
side_effects_thread.queue(inc, b);
side_effects_thread.queue(inc, c);
add();
assign();
join(side_effects_thread);

Di sini, a dinilai sebelum b atau c, walaupun ia adalah sasaran tugasan. Percubaan untuk menggunakan pembolehubah dalam mana-mana bahagian lain ungkapan sebelum titik jujukan seterusnya menghasilkan gelagat yang tidak ditentukan.

Atas ialah kandungan terperinci Bagaimanakah Keutamaan Operator Berbeza daripada Susunan Penilaian dalam Pengaturcaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn