Как правило, в C значения, отличные от 0, будут оцениваться как true
, а ноль будет оцениваться как false
.
Эта строка:
if (i && (i - 1))
printf("%d\n", p[i - 1]);
в основном проверяет, отличается ли значение i
и i-1
от 0
. Это означает, что 2 первых элемента в массиве не будут напечатаны, поскольку для i=0
мы получим i
, что составляет false
, а для i=1
мы получим (i-1)
, что составляет false
Таким образом, результатом этого кода должна быть печать 4, -7, 2, 8, 0