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!