A warning - Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Integer-Ausdrücken

Ich arbeite gerade anAccelerated C ++ und sind auf ein Problem in Übung 2-3 gestoßen.

Ein kurzer Überblick über das Programm - das Programm nimmt im Grunde genommen einen Namen an und zeigt dann eine Begrüßung in einem Rahmen aus Sternchen an - d. h. Hallo! umrahmt von *.

Die Übun - Im Beispielprogramm verwenden die Autorenconst int, um den Abstand (Leerzeichen) zwischen der Begrüßung und den Sternchen zu bestimmen. Anschließend bitten sie den Leser im Rahmen der Übung, den Benutzer um Eingabe zu bitten, wie groß die Polsterung sein soll.

All das scheint einfach zu sein, ich frage den Benutzer nach zwei ganzen Zahlen int) und speichere sie und ändere das Programm, um diese ganzen Zahlen zu verwenden. Entferne die vom Autor verwendeten, wenn ich kompiliere, obwohl ich die folgende Warnung erhalte:

Exercise2-3.cpp: 46: Warnung: Vergleich zwischen vorzeichenbehafteten und vorzeichenlosen Ganzzahlausdrücken

Nach einiger Recherche scheint es so zu sein, dass der Code versucht, eine der obigen ganzen Zahlen int) zu einerstring::size_type, das ist in Ordnung. Aber ich habe mich gefragt - bedeutet das, dass ich eine der ganzen Zahlen in @ ändern solltunsigned int? Ist es wichtig, explizit anzugeben, ob meine ganzen Zahlen signiert oder nicht signiert sind?

 cout << "Please enter the size of the frame between top and bottom you would like ";
 int padtopbottom;
 cin >> padtopbottom;

 cout << "Please enter size of the frame from each side you would like: ";
 unsigned int padsides; 
 cin >> padsides;

 string::size_type c = 0; // definition of c in the program
 if (r == padtopbottom + 1 && c == padsides + 1) { // where the error occurs

Oben sind die relevanten Codebits, diec ist vom Typstring::size_type weil wir nicht wissen, wie lang die Begrüßung sein könnte - aber warum bekomme ich dieses Problem jetzt, wenn der Code des Autors das Problem bei der Verwendung von @ nicht bekconst int? Darüber hinaus - an alle, die möglicherweise @ abgeschlossen habAccelerated C ++ - Wird das später in diesem Buch erklärt?

Ich bin auf Linux Mint und benutze g ++ über Geany, wenn das hilft oder einen Unterschied macht (da ich gelesen habe, dass es bei der Bestimmung, wasstring::size_type is).

Antworten auf die Frage(10)

Ihre Antwort auf die Frage