Nuansa Operator Bersyarat dalam C vs C
Operator bersyarat, atau operator ternary, yang dilambangkan dengan ?: sintaks, dimainkan peranan penting dalam kedua-dua C dan C. Walau bagaimanapun, perbezaan yang halus tetapi ketara wujud antara kedua-dua bahasa berkenaan cara pengendali ini mengendalikan nilai.
Gelagat Nilai
Dalam C, pengendali bersyarat tidak boleh menetapkan nilai kepada nilai l (nilai sebelah kiri), pembolehubah atau objek yang boleh diubah suai atau diberikan kepada. Sebagai contoh, kod berikut tidak sah dalam C:
<code class="c">(true ? a : b) = 1;</code>
Sebaliknya, seseorang mesti menggunakan pernyataan if-else atau menggunakan penuding untuk menetapkan nilai:
<code class="c">*(true ? &a : &b) = 1;</code>
Kedahuluan dan Perkaitan
Satu lagi perbezaan utama berkaitan keutamaan dan perkaitan pengendali bersyarat berbanding dengan pengendali tugasan (=). Dalam C , kedua-dua pengendali ?: dan = mempunyai keutamaan yang sama dan kumpulan kanan-ke-kiri. Ini menunjukkan bahawa kod berikut adalah sah:
<code class="cpp">(true ? a = 1 : b = 2);</code>
Walau bagaimanapun, dalam C, kekurangan keutamaan yang sama akan memerlukan tanda kurung di sekeliling ungkapan kedua:
<code class="c">(true ? a = 1 : (b = 2));</code>
Implikasi dalam Amalan
Perbezaan dalam tingkah laku ini mempunyai implikasi dalam pelbagai senario, seperti menetapkan nilai ahli kelas dalam pembina atau memulakan rujukan kepada objek. Pengaturcara C mesti sedar tentang sekatan nilai dalam C dan menggunakan pendekatan alternatif apabila bekerja dengan nilai dalam ungkapan bersyarat.
Atas ialah kandungan terperinci Bolehkah Operator Bersyarat Menetapkan kepada Nilai L dalam C vs. C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!