Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Susunan Penilaian dalam Penyata Tugasan C Mempengaruhi Output?

Bagaimanakah Susunan Penilaian dalam Penyata Tugasan C Mempengaruhi Output?

Linda Hamilton
Linda Hamiltonasal
2024-10-29 12:36:02140semak imbas

How Does the Order of Evaluation in C   Assignment Statements Affect the Output?

Susunan Penilaian dalam Penyata Tugasan dalam C

Dalam coretan kod yang diberikan:

peta< int, int> mp;
printf("%d ", mp.size());
mp[10]=mp.size();
printf("%dn", mp[10]); Walau bagaimanapun, tingkah laku adalah seperti berikut:

Sebelah kanan tugasan (dalam kes ini, mp.size()) dinilai pertama.

Sebelah kiri tugasan (mp[10]) diubah suai untuk merujuk nilai asas yang dikembalikan oleh sebelah kanan.

Sebelah kiri kemudian menilai nilainya sekali lagi untuk digunakan dalam tugasan.
  1. Oleh itu, dalam coretan kod, mp.size() dinilai kepada 0 dan diperuntukkan kepada mp[10]. Kemudian, mp[10] dinilai semula, yang kini mengembalikan nilai yang telah diberikan (1).
  2. Walaupun tidak dinyatakan dalam piawaian C semasa, tingkah laku ini telah ditangani dalam cadangan baru-baru ini ( N4228):

N4228 mencadangkan untuk memperhalusi susunan peraturan penilaian untuk menjadikannya ditakrifkan dengan baik untuk kes tertentu, termasuk yang di atas. Menurut cadangan itu, operan kanan tugasan dijujukan sebelum operan kiri.

Ini bermakna dalam C 17 dan seterusnya, gelagat coretan kod mungkin akan ditakrifkan dengan baik dan menghasilkan keluaran "1 1."

Atas ialah kandungan terperinci Bagaimanakah Susunan Penilaian dalam Penyata Tugasan C Mempengaruhi Output?. 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