Frage zum Casten
-
Hallo ich habe folgenden Code :
Der wird auch ohne Probleme compiliert :private int segmentHeight = -1; private int segmentLength = -1; public SegmentColon(Color segmentColor, int segmentLength){ this.segmentLength = segmentLength / 2; this.segmentHeight = segmentLength / 3; }
So aber nicht
private int segmentHeight = -1; private int segmentLength = -1; public SegmentColon(Color segmentColor, int segmentLength){ this.segmentLength = 0.5 * segmentLength ; this.segmentHeight = segmentLength / 3; }
Hier erwartet der Compiler das ich nach int caste. Ehrlich gesagt hätte ich das auch schon in der ersten Variante erwartet. Warum geht es beim ersten jedoch nicht beim zweiten ?
-
int / int = int
double * int = double
-
gastanwort hat dir geschrieben warum, daher
private int segmentHeight = -1; private int segmentLength = -1; public SegmentColon(Color segmentColor, int segmentLength){ this.segmentLength = segmentLength / 2; this.segmentHeight = segmentLength / 3; }
oder
private int segmentHeight = -1; private int segmentLength = -1; public SegmentColon(Color segmentColor, int segmentLength){ this.segmentLength = segmentLength >> 1; this.segmentHeight = segmentLength / 3; }