@progforgood
noob

Непонятный вывод на экран результатов нескольких последовательных ин(де)крементаций?

class  temp{
	public static void main(String args[]){
		int t = 011;
		System.out.println(t);    //9
		System.out.println(t++);  //выводится на экран 9, почему не 10?
		System.out.println(t++);  //10
		System.out.println(t++);  //11
	}
}

На выходе я ожидал:
9
10
11
12

а получил:
9
9
10
11

Объясните пож, почему имею то что имею?

P.S.: пользуясь случаем, вопрос номер два: как вывести на экран числа не в десятичном виде, а в восьмеричном, что бы вывод начинался с восьмеричного числа 12, или инкрементация в данном примере подразумевает: сначала перевод в дес а потом ++?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Постинкрмент (i++) отличается от преинкремента тем, что возвращает значение, которое было до инкремента, изменяя значение самой переменной. Это хорошо видно в примере на С++. Семантика в языках одинакова.

Для перевода в восьмиричный вид можно воспользоваться методом Integer.toOctalString(int);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
DMGarikk
@DMGarikk
Lead Software Developer
попробуйте написать System.out.println(++t);
Ответ написан
Комментировать
BacCM
@BacCM
C++ почти с рождения
Уже есть правильный ответ, поэтому, просто дам совет :).
Старайтесь не использовать в выражениях и вызовах функций унарные операторы. Компиляторы и так нормально умеют оптимизировать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы