C is what I would call a mid-level language. Its purpose is to serve as a "very high-level assembler," which is why it works so well as a compiler target, and why it embraces portability so well.
Historically, interpreters have typically been used with high-level languages, in the context of method calls. In its simplest form, an interpreter merely parses each keyword in the source language along with its associated tokens, and converts that into method calls and parameters. In practice, what most interpreters do is convert the source language into some intermediate representation, and it is thatthat representation thatwhich is interpreted.
What stops C from being interpreted or Jitted? Nothing. But that's not C's raison d'être.