033
является восьмеричным целочисленным литералом , и его значение равно 8*3+3 = 27
.Ваш код печатает 28
.
Целочисленный литерал, который начинается с 0
, является восьмеричным.Если он начинается в 0x
, то он шестнадцатеричный.
Кстати, для примера
int x = 08; //error
- ошибка времени компиляции, поскольку 8
не является восьмеричной цифрой.