Modern C is full of various extensions. This makes it a fair bit more complicated than it appears. C is also missing key simplicity features - like modules and forward referencing.
That's one thing that has made Zig more attractive as an alternative for (a lot of) C developers, it stays close enough with only small abstractions.
D: foreach (i; 0 .. 10) { body }
C: for (int i = 0; i < 10; ++i); { body }
Which one is more better? I can speak from experience that the former is much better, much easier to read, and has fewer bugs.
C doesn't allow forward referencing. What this means in practice as people lay out the code in a source file backwards, i.e. the leaf functions come first and the top level functions come last.
This is just not the ergonomic way to write code. The public functions should be first and the private leaf functions last. The code should read top to bottom.