Rumah > pembangunan bahagian belakang > C++ > Mengapakah `short = short` Berfungsi dalam C# Walaupun Ralat Penukaran Tersirat?

Mengapakah `short = short` Berfungsi dalam C# Walaupun Ralat Penukaran Tersirat?

DDD
Lepaskan: 2025-01-23 08:37:09
asal
675 orang telah melayarinya

Why Does `short  = short` Work in C# Despite Implicit Conversion Errors?

Memahami short = short Gelagat C#

Menambah secara langsung dua short pembolehubah dalam C# menghasilkan int disebabkan potensi limpahan, yang membawa kepada ralat pengkompil jika anda cuba memberikan hasil kembali kepada short:

<code class="language-csharp">Error: Cannot implicitly convert type 'int' to 'short'.</code>
Salin selepas log masuk

Walau bagaimanapun, menggunakan operator penugasan kompaun = berkesan:

<code class="language-csharp">short a = 10;
short b = 20;
a += b; // This compiles and runs without error. Why?</code>
Salin selepas log masuk

Sebab Disebalik Perbezaan

Kuncinya terletak pada cara pengkompil C# mengendalikan pengendali tugasan kompaun. Semasa menambah dua nilai short menghasilkan int, operator = secara tersirat menghantar hasil int kembali ke short sebelum tugasan. Ini bersamaan dengan:

<code class="language-csharp">a += b; // Is the same as: a = (short)(a + b);</code>
Salin selepas log masuk

Pelakon tersirat ini mengelakkan ralat penukaran eksplisit, mendayakan kod ringkas untuk operasi aritmetik biasa. Pengkompil pada dasarnya mengendalikan potensi kehilangan data yang berkaitan dengan penukaran. Tingkah laku ini direka untuk kemudahan dan untuk mencerminkan kefungsian operator serupa dalam bahasa lain. Pengoptimuman pengkompil mengelakkan keperluan untuk lebih banyak kod verbose.

Atas ialah kandungan terperinci Mengapakah `short = short` Berfungsi dalam C# Walaupun Ralat Penukaran Tersirat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan