Asal C bermula daripada bahasa BCPL (Basic Combined Programming Language) oleh Martin Richards pada 1967.BCPL diubah suai oleh Ken Thompson menjadi bahasa B. B pula diubah suai ke C oleh Dennis Ritchie pada 1972. Digelar bahasa pertengahan kerana mengabungkan ciri-ciri bahasa aras tinggi dan aras rendah, antara ciri-ciri gabungan C adalah ia mempunyai kemudahan yang biasa disediakan oleh bahasa peringkat rendah contohnya pengolahan bit dan penggunaan pembolehubah daftar dan Ia juga mempunyai pembinaan kawalan dan jenis struktur data yang mana biasa terdapat dalam bahasa peringkat tinggi