Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Penukaran Aritmetik Biasa C Mengendalikan Operasi Integer Bertanda dan Tidak Bertanda Campuran?

Bagaimanakah Penukaran Aritmetik Biasa C Mengendalikan Operasi Integer Bertanda dan Tidak Bertanda Campuran?

Linda Hamilton
Linda Hamiltonasal
2024-11-27 03:06:10543semak imbas

How Do C  's Usual Arithmetic Conversions Handle Mixed Signed and Unsigned Integer Operations?

Peraturan Promosi untuk Pengendali Perduaan Bertanda Campuran

Pengendali yang mengambil operan jenis aritmetik melakukan penukaran automatik dan menentukan jenis hasil mengikut peraturan yang telah ditetapkan . Apabila operan mempunyai tanda yang berbeza, C mengikuti proses penukaran aritmetik biasa yang digariskan dalam §5/9 piawai C.

Dalam contoh pertama:

int max = std::numeric_limits<int>::max();
unsigned int one = 1;
unsigned int result = max + one;

Promosi integral dilakukan, menukar kedua-dua maks dan satu kepada int, menghasilkan hasil int yang tidak ditandatangani. Penandatanganan maks diabaikan, membawa kepada keputusan 2147483648.

Dalam contoh kedua:

unsigned int us = 42;
int neg = -43;
int result = us + neg;

Penukaran mengikut peraturan bahawa operan yang tidak ditandatangani diutamakan, menyebabkan neg menjadi ditukar kepada jenis yang tidak ditandatangani. Penukaran ini menghasilkan nilai yang ditentukan pelaksanaan untuk hasil int kerana nilai us neg tidak boleh diwakili sebagai int.

Atas ialah kandungan terperinci Bagaimanakah Penukaran Aritmetik Biasa C Mengendalikan Operasi Integer Bertanda dan Tidak Bertanda Campuran?. 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