Как уже говорили другие, i--
уменьшает i
и возвращает исходное значение, что означает, что ваш код выполнил бы декремент, но затем немедленно вернул его к исходному значению.
Вы можетепереключите его на --i
, и в этом случае будет возвращено уменьшенное значение, но в любом случае вы выполняете ненужную работу с --
, потому что он должен установить i
, вернуть новое значение,и затем снова установите i
на новое значение.
Было бы лучше просто набрать i-1
, что не установит значение i
дважды:
i = (i > 0) ? i-1 : i;
Все это говорит о том, что, поскольку ложный вариант троичного числа ничего не делает, вам, вероятно, лучше использовать простое if()
:
if(i > 0) { i--; }
Его легче читать, не так ли?Не имеет значения, в какую сторону идет --
, и не выполняет никакой ненужной обработки, независимо от результата.