It's not that hard to spot, in some cases it can improve readability, consider:
Say I wanted to fill each dimension of 'x' with '10'.
It's just an example, there are easier ways to fill that arrayCode:#define DIM 5 /* ... */ int x[DIM][DIM][DIM][DIM]; int a, b, c, d; for(a = 0; a < DIM; a++) for(b = 0; b < DIM; b++) for(c = 0; c < DIM; c++) for(d = 0; d < DIM; d++) x[a][b][c][d] = 10; /* OR */ for(a = 0; a < DIM; a++) { for(b = 0; b < DIM; b++) { for(c = 0; c < DIM; c++) { for(d = 0; d < DIM; d++) { x[a][b][c][d] = 10; } } } }
Anyway it proves to be more compact and I'd say is readable at a first glance, not to mention the potential bug of leaving off a closing brace (and accidentally closing it later).
My point is, the author has done nothing wrong - it really comes into coding style, after all that's what tab-indenting is really supposed to help solve. Plus you should be able to recognize that if there is no braces the first statement after will be run, (keep going until you find a ';').