Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah C Menilai Operan Kanan dan Kiri dalam Penyata Tugasan?
Susunan Penilaian dalam Penyata Tugasan dalam C
Apabila memberikan nilai kepada elemen peta, seperti mp[10] = mp. size(), susunan penilaian ungkapan menjadi penting. Ungkapan khusus ini menghasilkan hasil "0 1" yang tidak dijangka, yang menimbulkan persoalan tentang susunan penilaian yang ditentukan dalam C .
Piawaian C menentukan bahawa susunan penilaian tidak ditentukan untuk operasi tertentu, seperti panggilan fungsi. Walau bagaimanapun, pengendali tugasan seperti = dijujukan selepas penilaian operan kanan dan kiri, meninggalkan jurang dalam susunan yang ditentukan. Kekaburan ini telah menyebabkan keperluan untuk cadangan yang diperhalusi.
Cadangan piawaian C baru-baru ini (N4228) berusaha untuk menangani isu ini dengan menyatakan perintah penilaian untuk kes tertentu. Menurut N4228, ungkapan tugasan khusus ini termasuk dalam kategori gelagat tidak ditentukan, di mana kedua-dua penilaian operan tidak berjujukan.
Seperti versi N4228 (P0145R0) yang disemak semula, tingkah laku ini kini ditentukan. Bahagian yang disemak [expr.ass] menyatakan bahawa operan kanan pengendali tugasan disusun sebelum operan kiri. Oleh itu, dalam ungkapan yang diberikan, mp.size() akan dinilai terlebih dahulu, diikuti dengan penugasan hasil kepada mp[10]. Piawaian C 17 yang dikemas kini dijangka dapat menjelaskan susunan penilaian ini.
Ringkasnya, susunan penilaian penyata tugasan kekal tidak dinyatakan dalam kes tertentu, tetapi cadangan piawaian C terkini (N4228) bertujuan untuk memperhalusi peraturan ini. Spesifikasi semasa yang diterima, P0145R3, menjelaskan bahawa operan kanan tugasan dinilai sebelum operan kiri, menyelesaikan kekaburan dalam ungkapan yang diberikan.
Atas ialah kandungan terperinci Bagaimanakah C Menilai Operan Kanan dan Kiri dalam Penyata Tugasan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!