Vergleich: negativer int <-> unsigned int
-
int a = -1; unsigned int b = 2; if (a < b) { printf("asd"); }
Wieso funktioniert dieser Vergleich nicht?
Mitif (a < (int) b)
gehts.
Sollte der Compiler nicht schlau genug sein, das selber hinzubiegen?
MFG Caster
-
Eigentlich solltest Du selbst schlau genug sein und solchen Unsinn nicht eingeben.
-
Stichwort für google: integer promotion
Als allgemeinen Tip: Hohe Warnstufen lässt sowas bei den meisten Compilern warnen
-
"Treat Warnings as errors" sollte Pflicht sein ...
-
Und wenn negative Werte im Spiel sind sollten signed integer Pflicht sein
-
Ok - bleibt noch das letzte Geheimnis: Die geheimnisvolle Inschrift "asd".
Auf meiner Tastatur ...
-
Ich benutze GCC 3.4.5 und der bringt mir mit -Wall keine Warnung.
@Tim: Danke für das Stichwort.
-
Caster schrieb:
Ich benutze GCC 3.4.5 und der bringt mir mit -Wall keine Warnung.
Ein Compiler kann nicht "Schwächen" eines Programms oder Programmierers aufdecken.
Er überprüft auf Syntax und findet gröbere Fehler. In diesem Fall ist das das
Problem.Es macht einfach keinen Sinn.
-
Caster schrieb:
Ich benutze GCC 3.4.5 und der bringt mir mit -Wall keine Warnung.
@Tim: Danke für das Stichwort.-Wsign-compare ist der Schalter, ist aber bei -Wextra mit drin, also in Zukunft -Wextra benutzen. Und um unseren Dnepr-Fahrer glücklich zu machen auch noch gleich -Werror
-
Danke
Bei meinem ist das "-w4", meint aber das Gleiche. Bei der Schepper muß ich auch
auf Warnungen achten: merkwürdige Geräusche, verlorene Teile. Mache ich das nicht,
geht etwas kaputt. Ganz einfach.