Rumah >pembangunan bahagian belakang >C++ >Mengapa bait bait = int dalam Operasi Aritmetik C#?

Mengapa bait bait = int dalam Operasi Aritmetik C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-27 17:26:11159semak imbas

C#Operasi Aritmetik: Mengapa byte byte = int?

Why Does byte   byte = int in C# Arithmetic Operations?

penukaran jenis cise dan operasi aritmetik: byte byte = int

Dalam C#, keputusan pengkomputeran matematik yang melibatkan byte atau jenis pendek akan ditukar secara automatik ke dalam jenis int. Tingkah laku ini boleh menyebabkan hasil yang tidak dijangka apabila memproses bilangan kecil yang disimpan dalam array byte. Pada mulanya, orang mungkin berfikir bahawa operasi seperti byte byte dan pendek pendek akan mengembalikan nilai jenis yang sama dengan bilangan operasi, dan mendapatkan nilai byte dan pendek, masing -masing. Walau bagaimanapun, ini tidak berlaku dalam C#.

Alasan di sebalik tingkah laku ini adalah perwakilan dalaman jenis nombor dalam CLR (ketika bahasa awam sedang berjalan). Semua operasi berangka dilakukan menggunakan integer 32 -bit, tanpa mengira jenis operasi. Oleh itu, apabila dua bait ditambah, mereka mula -mula ditukar menjadi integer, dan hasilnya juga integer.

Penukaran jenis tersembunyi ini memastikan ketepatan hasilnya. Sebagai contoh, jika nilai dua pembolehubah byte adalah 1 dan 2, mereka akan menjadi 3. Jika hasilnya ditukar kembali ke byte, ia akan dipotong kepada 0 kerana nilai melebihi julat bait yang sah (0-255).

Seperti yang ditunjukkan dalam , hasilnya boleh ditukar kembali ke byte dengan secara eksplisit menukar hasil kepada jenis data yang lebih kecil, dan boleh diperkenalkan atau melimpah. Penukaran eksplisit ini memerlukan kod tambahan untuk mengurangkan kebolehbacaan operasi, dan ia boleh diperkenalkan kepada pepijat.

Dalam kes anda, menggunakan array byte untuk menyimpan bilangan kecil boleh meningkatkan prestasi kerana kadar hit cache lebih tinggi. Walau bagaimanapun, penukaran eksplisit yang diperlukan akan mengurangkan kebolehbacaan. Untuk menyelesaikan masalah ini, anda boleh mempertimbangkan menggunakan array ulong khas, yang boleh menyimpan 64 -bit bilangan bulat bukan simbolik. Walaupun operasi ulong juga menghasilkan nilai ulong, mereka menyediakan julat yang lebih besar (0-18,446,744,073,709,551,615) dan dapat menghapuskan keperluan penukaran eksplisit.

Atas ialah kandungan terperinci Mengapa bait bait = int dalam Operasi Aritmetik C#?. 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