Cast auf kleineren Typen. Wieso kein Warnung?
-
Morgen,
folgender Code:
int foo = 22; short bar = foo;wenn ich den mit gcc -Wall kompiliere, kriege ich KEIN Warning! bar ist doch kleiner als int, sollte das nicht ein Warning ergeben?
-
Weil es ein Literal ist?
-
Wieso literal? foo ist doch eine Variable
-
Ja, aber ich ging davon aus, dass der Compiler "merkt", dass bar letzendlich über ein Literal initialisiert wird.
-
Ich kann's auch nicht erklären, würde dir nur von dieser Art von Typumwandlung abraten, da sobald foo den Wertebereich von bar (+-32767) verlässt, bekommst du komplett andere Werte.
-
[Rewind] schrieb:
den Wertebereich von bar (+-32767) verlässt
Wer sagt, wie gross genau der Wertebereich von
shortist? Der Standard nicht...
-
Warnwilliger schrieb:
Morgen,
folgender Code:
int foo = 22; short bar = foo;wenn ich den mit gcc -Wall kompiliere, kriege ich KEIN Warning! bar ist doch kleiner als int, sollte das nicht ein Warning ergeben?
Warnt er bei
int foo = rand(); short bar = foo;?
Falls ja, liegt es wirklich nur daran, daß der Compiler ein Schlauberger ist.