Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah C Mengendalikan Perbandingan Antara Integer Bertanda dan Tidak Bertanda?
Dalam C , apabila membandingkan integer yang ditandatangani dengan integer yang tidak ditandatangani, integer yang ditandatangani dinaikkan kepada integer yang tidak ditandatangani. Ini bermakna tanda negatif diabaikan dan integer dianggap sebagai nilai positif yang besar.
Pertimbangkan program C berikut:
#include <iostream> #include <vector> int main() { std::vector<int> a; std::cout << "Vector size: " << a.size() << std::endl; int b = -1; if (b < a.size()) std::cout << "Less"; else std::cout << "Greater"; }
Dalam atur cara ini, saiz vektor a ialah integer tidak bertanda. Walau bagaimanapun, apabila membandingkannya dengan integer yang ditandatangani b, b dinaikkan pangkat kepada integer yang tidak ditandatangani. Ini bermakna tanda negatif diabaikan dan b dianggap sebagai nilai positif yang besar. Oleh itu, perbandingan b < a.size() akan sentiasa palsu dan program akan mencetak "Greater."
Untuk melihat tingkah laku ini dengan lebih jelas, pertimbangkan contoh kod berikut:
#include <iostream> int main() { unsigned int a = 0; int b = -1; std::cout << std::boolalpha; std::cout << (b < a) << "\n"; }
Atur cara ini akan output palsu, walaupun b jelas kurang daripada a. Ini kerana b dinaikkan kepada integer tidak bertanda dan tanda negatif diabaikan.
Atas ialah kandungan terperinci Bagaimanakah C Mengendalikan Perbandingan Antara Integer Bertanda dan Tidak Bertanda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!