Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Keutamaan Operator Berbeza daripada Susunan Penilaian dalam Pengaturcaraan?
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!