There are a many reasons, including:
- It compiles into assembly language.
- It is statically typed.
- No garbage collection.
- No exception mechanism.
- Compiler optimizations
- Part of the philosophy of C is to keep things simple and maintain backwards compatibility, instead of adding more features.