Rumah > pembangunan bahagian belakang > C++ > Mengapakah `short = short` Berfungsi dalam C# Manakala `short = short short` Tidak?

Mengapakah `short = short` Berfungsi dalam C# Manakala `short = short short` Tidak?

Mary-Kate Olsen
Lepaskan: 2025-01-23 08:52:10
asal
986 orang telah melayarinya

Why Does `short  = short` Work in C# While `short = short   short` Doesn't?

Limpahan integer dan operator penugasan aritmetik dalam C#: short = short

Dalam C#, apabila dua short integer ditambah, hasilnya akan menjadi jenis int dengan julat nilai yang lebih besar daripada short. Limpahan integer berlaku jika jumlah dua short integer melebihi nilai maksimum short.

Pertimbangkan kod berikut:

<code class="language-csharp">short a, b;
a = 10;
b = 10;
a = a + b; // 错误:无法隐式转换类型“int”为“short”。</code>
Salin selepas log masuk

Di sini, hasil operasi penambahan a dan b adalah daripada jenis int, dan pengkompil tidak boleh secara tersirat menukarnya kepada menaip short. Ini kerana menugaskan int kepada short tanpa penukaran yang jelas mengakibatkan kehilangan data.

Walau bagaimanapun, kod berikut tidak menghasilkan ralat:

<code class="language-csharp">a += b; // 但这段代码可以成功运行,为什么?</code>
Salin selepas log masuk

Ini kerana C# mengendalikan operator tugasan aritmetik = secara berbeza. Apabila menggunakan =, pengkompil secara dalaman melakukan perkara berikut:

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

Pengkompil akan secara automatik menukar hasil operasi penambahan kepada jenis a sebelum memberikan hasil kepada short. Ini memastikan bahawa nilai disimpan dengan betul dalam pembolehubah int walaupun hasil perantaraan adalah jenis short.

Tingkah laku ini serupa dengan pengendali tugasan kompaun lain, seperti -=, *= dan /=, yang secara automatik menukar hasil kepada jenis operan kiri.

Oleh itu, pengendali tugasan aritmetik short boleh digunakan dengan selamat pada = pembolehubah walaupun jumlahnya melebihi julat short. Pengkompil mengendalikan penukaran jenis secara dalaman untuk mengelakkan ralat limpahan integer.

Atas ialah kandungan terperinci Mengapakah `short = short` Berfungsi dalam C# Manakala `short = short short` Tidak?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan