Поскольку вы выполняете целочисленное деление.
Как говорит @Noldorin, если оба оператора являются целыми числами, то используется целочисленное деление.
Результат 0.33333333 не может быть представлен как целое число, поэтому к результату присваивается только целочисленная часть (0).
Если любой из операторов является double
/ float
, тогда будет выполнена арифметика с плавающей запятой. Но у вас будет такая же проблема, если вы это сделаете:
int n = 1.0 / 3.0;