24

Eclipse を使用して Android でアプリケーションを開発しています。次のコードを書き、テストで最初と 3 番目の " if " ブロックに到達できません。なんで?

数値に先行ゼロを追加すると、等号演算子は false を返します。

int var = 123;
if (var == 0123) {
    //not reachable
}
if (var == 123) {
    //reachable
}
if (var == (int)0123) {
    //not reachable
}
if (var == (int)123) {
    //reachable
}
4

3 に答える 3

55

0123は 8 進数 (先行 0 ) で、123は 10 進数です。

したがって、0123 は実際には 83 に等しくなります。

于 2012-05-05T11:41:06.963 に答える
22

ゼロで始まる整数はすべて 8 進数 (基数 8) です。

0123は8進数で、12310進数です

 0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
        =3+16+64+0
        =83   
于 2012-05-05T11:42:47.867 に答える
9

0123 は 10 進数ではなく 8 進数 (基数 8) であるため、これは 83 に等しい

数値 k を 10 進数に変換するには、基数 8 の表現を定義する式を使用します。

ここに画像の説明を入力

0123 base-8 = 83 decimal

0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
     =3+16+64+0
     =83   

8 進数は、ASCII 数字 0 の後に 1 つ以上の ASCII 数字 0 ~ 7 が続く構成で、正、ゼロ、または負の整数を表すことができます。

注: Java では 8 進数値は先行ゼロで示されます。通常の 10 進数には先行ゼロを含めることはできません。

于 2012-05-05T11:43:25.927 に答える