Heim > Backend-Entwicklung > C++ > Wie geht C mit Vergleichen zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlen um?

Wie geht C mit Vergleichen zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlen um?

Linda Hamilton
Freigeben: 2024-12-07 00:16:11
Original
1000 Leute haben es durchsucht

How Does C   Handle Comparisons Between Signed and Unsigned Integers?

Vergleich von vorzeichenbehafteten und vorzeichenlosen Typen in C

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";
}
Nach dem Login kopieren

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";
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage