C é considerado estaticamente tipado (você não pode ter uma mudança de variável de int para float). Depois que uma variável é declarada, ela é travada dessa maneira.
Mas ele é considerado fracamente tipado porque os tipos podem ser invertidos.
O que é 0? '\ 0', FALSE, 0.0, etc.
em muitas linguagens você não pode dizer IF (variável) porque as condições só aceitam valores booleanos de expressões booleanas. Estes são digitados com mais força. O mesmo se aplica a ir entre caracteres e inteiros.
basicamente c tem dois tipos de dados simples principais, inteiros e números de ponto flutuante (embora várias precisões). Todo o resto, booleanos, enums (não é simples, mas se encaixa), etc. são implementados como um desses. Até os caracteres são basicamente inteiros.
Compare com outras linguagens onde existem tipos de string, tipos enum que só podem ser atribuídos aos valores definidos, tipos booleanos onde apenas expressões que geram booleanos ou verdadeiro / falso podem ser usadas.
Mas você pode argumentar que, em comparação com Perl, C é fortemente tipado. Portanto, é um daqueles argumentos famosos (vi vs emacs, linux vs windows, etc.). C # é mais forte do que C. Basicamente, você pode argumentar de qualquer maneira. E suas respostas provavelmente irão para os dois lados :) Além disso, alguns livros / páginas da web dirão que C está mal tipado, e alguns dirão que C é fortemente tipado. Se você acessar a wikipedia, a entrada C diz "digitação parcialmente fraca". Eu diria que, em comparação com Python, C é mal tipado. Portanto, Python / C #, C, Perl no continuum.