A linguagem C é uma das mais importantes linguagens de programação já desenvolvidas, influenciando inúmeras linguagens subsequentes e se consolidando como um ponto-chave na história da programação e da computação em sua totalidade.
Seu desenvolvimento se deu entre os anos de 1969 a 1973 nos laboratórios Bell Labs, pertencentes à empresa de telecomunicações AT&T, situada nos Estados Unidos. Foi criada pelo cientista da computação Dennis Ritchie com o auxílio do seu colega de trabalho Ken Thompson, de modo a reescrever e portar o Kernel do Unix (inicialmente escrito em Assembly) para o computador DEC PDP-11. A linguagem C e o sistema operacional Unix são tecnologias contemporâneas, intrinsecamente ligadas, o que levou ao Kernel do Unix ser totalmente reescrito em C no verão de 1973.
Ken Thompson criou o Unix com a ajuda da linguagem que antecedeu a C: a Linguagem B. Essa linguagem foi criada pelo próprio Thompson visando melhorar um pouco mais a linguagem BCPL que foi criada por Martin Richards, então Ken Thompson nomeou sua linguagem dessa forma - B é uma possível contracção de BCPL. B herdou a natureza sem tipos de BCPL, onde o único tipo de dado era a word, qualquer que fosse seu tamanho.
A natureza sem tipos da linguagem B apresentava várias desvantagens à medida que máquinas com suporte a processamento ASCII tornavam-se comuns. Por esse motivo, Thompson e Ritchie começaram a desenvolver uma versão expandida da linguagem que suportava novos tipos internos (além da word) e aqueles definidos pelos usuários (as estruturas). Essa nova versão veio a se tornar a linguagem NB (New B) e posteriormente a linguagem C.
Devido à fácil portabilidade provida pela linguagem C e pelo próprio Unix, essas duas tecnologias se popularizaram muito na década de 1970, ao passo que muitas universidades e organizações adotaram a linguagem e passaram a criar suas próprias versões. Embora a linguagem C não fosse originalmente projetada tendo a portabilidade como uma meta principal, ela teve sucesso expressando programas, incluindo igualmente sistemas operacionais, em máquinas que variam de pequenos computadores pessoais até poderosos supercomputadores. Trata-se de uma linguagem suficientemente abstrata dos detalhes do hardware subjacente de modo que a portabilidade dos programas pode ser alcançada.
C é uma linguagem de alto nível, isso significa ser composta de instruções abstratas (diferentes daquelas presentes no conjunto de instruções de uma arquitetura de processador) e estar mais próxima da linguagem humana, isto é, facilita a compreensão de suas estruturas para os seres humanos. Porém, apesar de ser alto nível, C fornece um acesso consideravelmente de baixo nível à memória, produzindo executáveis muito enxutos e velozes que "conversam" bem com o sistema operacional e permitindo acesso e programação direta do microprocessador.
O livro "A Linguagem de Programação C", publicado em 1978 e escrito por Dennis Ritchie e Brian Kernighan, sendo comumente referido como C K&R (Kernighan and Ritchie), serviu como uma primeira referência informal da linguagem até um padrão formal ser adotado mais de dez anos depois.
Durante a década de 1980 a linguagem C espalhou-se globalmente e vários compiladores foram constituídos para diferentes arquiteturas e sistemas operacionais. Na época, havia muitos produtores independentes de compiladores. Em meados de 1982, era nítido que a linguagem C precisava de uma padronização formal, para contornar dois problemas em evidência: a incompatibilidade dos inúmeros compiladores produzidos à época e o fato da descrição de K&R não mais relatar a linguagem como havia feito. Ademais, o uso incipiente da linguagem C em projetos sujeitos a contratos comerciais e governamentais significou que uma padronização era importante. Sendo assim, a ANSI (American National Standards Institute) estabeleceu no verão de 1983 o comitê X3J11, sob a direção do CBEMA, objetivando produzir um padrão para a linguagem C (que ficaria conhecido como ANSI C). O comitê X3J11 finalizou seu relatório no final de 1989 e, subsequentemente, foi aceito, em 1990, pela ISO (International Organization for Standardization) estabeleceu no verão de 1983 o comitê X3J11 como ISO/IEC 9899-1990. Uma reformulação do padrão ocorreu em 1999, chamado C99 ou ISO/IEC 9899:1999, remodelando a sintaxe e adicionando novas funcionalidades e tipos de dados, por exemplo, a inclusão de arrays de comprimento variável (VLA - Variable Lenght Arrays) definidos em tempo de execução e os tipos long long int e complex. Uma nova reformulação veio em 2011, chamado C11 ou ISO/IEC 9899:2011, e a mais recente, desenvolvida em 2017 e publicada em 2018, a versão C17 ou ISO/IEC 9899:2018.
A linguagem C é uma linguagem tipicamente compilada e pertence aos seguintes paradigmas de programação: estrutural, imperativo e procedimental. Abaixo, segue a definição de cada um dos termos: