Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen ganzzahligen Ausdrücken in C++
C++ ist eine universelle Programmiersprache. Es wurde mit einem Schwerpunkt auf Systemprogrammierung entwickelt, ist aber auch in der Geschäftswelt weit verbreitet.
Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen ganzzahligen Ausdrücken in C++
C++ unterstützt vorzeichenbehaftete und vorzeichenlose Ganzzahlen, die als int
und unsigned int
geschrieben werden. Wenn Sie ganze Zahlen mit Vorzeichen verwenden, können Sie die Vergleichsoperatoren verwenden, um zwei Werte zu vergleichen.
Die Vergleichsoperatoren funktionieren nicht, da sie bei der Verwendung von Ganzzahlen ohne Vorzeichen immer false
oder true
auswerten.
Vorzeichenbehaftete Zahlen sind auf den meisten Prozessoren in der Regel schneller als vorzeichenlose Ganzzahlen, da sie weniger Speicher verbrauchen als vorzeichenlose Ganzzahlen.
Ganzzahlen mit Vorzeichen benötigen mehr Speicherplatz als Ganzzahlen ohne Vorzeichen, da sie negative und positive Zahlen speichern. Dies bedeutet, dass vorzeichenbehaftete Ganzzahlen mehr Speicher für eine bestimmte Datenmenge benötigen als vorzeichenlose.
Ganzzahlen ohne Vorzeichen können zwar nur positive Zahlen darstellen, aber wenn Sie zwei verschiedene Werte addieren, erhalten Sie bei Ganzzahlen ohne Vorzeichen immer ein Ergebnis mit demselben Vorzeichen (+
oder -
). Wenn Sie bei vorzeichenbehafteten Ganzzahlen zwei verschiedene Werte addieren, erhalten Sie ein Ergebnis mit zwei verschiedenen Vorzeichen (+
oder -
).
C++-Compiler-Warnung
Compiler warnen vor Vergleichen zwischen signierten und unsignierten Typen, da die Bereiche signierter und unsignierter int
s variieren und eine unerwartete Leistung liefern können.
Es kann auch die Sicherheit Ihres Programms nicht garantieren, da vorzeichenbehaftete und vorzeichenlose Integer-Ausdrücke gemischt sind. Dies kann passieren, wenn eine negative Zahl in einen vorzeichenlosen Typ konvertiert wird oder eine positive Zahl in eine vorzeichenbehaftete konvertiert wird.
Der Compiler warnt Sie nicht, wenn der Ausdruck nur einen Operanden hat, einen vorzeichenbehafteten Typ, dessen Wert in den Zieltyp passt.
Lassen Sie uns ein Beispiel besprechen, um besser zu verstehen, wie der Compiler warnt.
#include <iostream>
#include <string>
using namespace std;
int helloWorld(string input);
int main() {
string input;
input = "sample";
helloWorld(input);
}
int helloWorld(string input) {
int demo = 0;
for (int x = 0; x < input.length(); x++) {
if (input.substr(x, 4) == " ") {
demo++;
}
}
cout << demo;
}
Klicken Sie auf diesen Link, um die Live-Demonstration des Codes zu überprüfen.
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook