Ответ 1
0123
- восьмеричное число (leading 0), а 123
- десятичное число.
поэтому 0123 фактически равно 83.
Я разрабатываю приложение на Android с помощью Eclipse. Я написал следующий код, и в тестах первый и третий " 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
}
0123
- восьмеричное число (leading 0), а 123
- десятичное число.
поэтому 0123 фактически равно 83.
Любое целое число Number Leading With Zero - это восьмеричное число (база 8).
0123
- восьмеричное число и 123
- десятичное число
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
=3+16+64+0
=83
потому что 0123 в десятичной цифре его восьмеричный (база 8) так что это равно 83
Чтобы преобразовать число k в десятичный, используйте формулу, которая определяет его представление base-8:
0123 base-8 = 83 decimal
0123 = (3*8^0) +(2*8^1)+(1*8^2)+(0*8^4)
=3+16+64+0
=83
Октальная цифра состоит из цифры ASCII 0, за которой следует одна или несколько цифр ASCII от 0 до 7 и может представлять собой положительное, нулевое или отрицательное целое число.
Примечание: Восьмеричные значения обозначаются в java начальным нулевым нормальным десятичным числом, не могут иметь начальный нуль