In C wird beim Vergleich einer vorzeichenbehafteten Ganzzahl mit einer vorzeichenlosen Ganzzahl die vorzeichenbehaftete Ganzzahl zu einer vorzeichenlosen Ganzzahl heraufgestuft. Dies bedeutet, dass das negative Vorzeichen ignoriert wird und die Ganzzahl als großer positiver Wert behandelt wird.
Betrachten Sie das folgende C-Programm:
#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"; }
In diesem Programm ist die Größe des Vektors a ist eine vorzeichenlose Ganzzahl. Beim Vergleich mit der vorzeichenbehafteten Ganzzahl b wird b jedoch zu einer vorzeichenlosen Ganzzahl heraufgestuft. Das bedeutet, dass das negative Vorzeichen ignoriert wird und b als großer positiver Wert behandelt wird. Daher ist der Vergleich b < a.size() ist immer falsch und das Programm gibt „Größer“ aus.
Um dieses Verhalten deutlicher zu sehen, betrachten Sie das folgende Codebeispiel:
#include <iostream> int main() { unsigned int a = 0; int b = -1; std::cout << std::boolalpha; std::cout << (b < a) << "\n"; }
Dieses Programm wird Ausgabe falsch, obwohl b offensichtlich kleiner als a ist. Dies liegt daran, dass b zu einer vorzeichenlosen Ganzzahl heraufgestuft wird und das negative Vorzeichen ignoriert wird.
Das obige ist der detaillierte Inhalt vonWie geht C mit Vergleichen zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!