當我運行這個程序時,它輸出-43。java整數處理
public class Main {
public static void main(String[] args) {
int a=053;
System.out.println(a);
}
}
這是爲什麼? 053如何變成-43?
當我運行這個程序時,它輸出-43。java整數處理
public class Main {
public static void main(String[] args) {
int a=053;
System.out.println(a);
}
}
這是爲什麼? 053如何變成-43?
我不知道它是如何變成負數,但用0
開始一個整數指定它是八進制(基數爲八)。基數爲8的53
爲基數爲10的43
。
它打印出43,而不是-43。這是因爲如果你寫一個前導0的數字,它是一個八進制常數。
從這裏,http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
INT octVal = 032; //數26,八進制
Java教程http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
int decVal = 26; // The number 26, in decimal
int octVal = 032; // The number 26, in octal <<== LOOK FAMILIAR?
int hexVal = 0x1a; // The number 26, in hexadecimal
int binVal = 0b11010; // The number 26, in binary
燁...這是一個疑難雜症!
乾杯。基思。
這從谷歌上搜索「如何八進制轉換爲十進制」
八進制轉換爲十進制
所以0 + 5 = 5,5 * 8 = 40,40 + 3 = 43
作爲http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1說:
八進制標記由一個ASCII數字0,接着的ASCII數字0到7用下劃線散佈一個或多個 ,並且可以 表示正,零或負整數。
其格式爲:
OctalNumeral:
0 OctalDigits
0 Underscores OctalDigits
所以,如果你使用
int octVal = 053;
,或者
int octVal = 0_53;
他們兩個,你會得到43。
+1這正是我心中的 – MByD 2011-05-02 04:35:21
順便說一句,在我的機器,它返回43,而不是-43 – MByD 2011-05-02 04:36:26