3
可能重複:
Weird java behavior with casts to primitive types瞭解Java程序
爲什麼下面的打印1
?
int i = (char) - (int) + (long) - 1;
System.out.println(i);
爲什麼上面的代碼行打印1? i
的價值怎麼變成1?
可能重複:
Weird java behavior with casts to primitive types瞭解Java程序
爲什麼下面的打印1
?
int i = (char) - (int) + (long) - 1;
System.out.println(i);
爲什麼上面的代碼行打印1? i
的價值怎麼變成1?
如果我沒有記錯的話,
int i = (char) - (int) + (long) - 1;
實際上相當於
int i = (char)(-(int)(+((long)(- 1))));
因爲-1和1個很好地融入在表達式中使用的所有數據類型,我們可以刪除要獲得的演員表
int i = -(+(- 1));
這樣看,每個表達式都有自己的變量(呃,除了-1)。
long a = (long) -1; // a = -1
int b = (int) a; // b = -1
int c = -b; // c = 1
int d = (char) c; // d = 1
int i = (int) d; // i = 1 (implicit conversion)