C se considera de tipo estático (no puede tener un cambio de variable de int a float). Una vez que se declara una variable, se bloquea de esa manera.
Pero se considera de tipo débil porque los tipos se pueden cambiar.
¿Qué es 0? '\ 0', FALSO, 0.0, etc.
en muchos idiomas no se puede decir IF (variable) porque las condiciones solo tomarán valores booleanos de expresiones booleanas. Estos se escriben con más rigor. Lo mismo se aplica al ir entre caracteres y números enteros.
Básicamente, c tiene dos tipos de datos simples principales, números enteros y números de coma flotante (aunque con varias precisiones). Todo lo demás booleanos, enumeraciones (no simples pero encaja), etc. se implementan como uno de esos. Incluso los caracteres son básicamente números enteros.
Compare con otros lenguajes donde hay tipos de cadenas, tipos de enumeración que solo se pueden asignar a los valores definidos, tipos booleanos donde solo se pueden usar expresiones que generan booleanos o verdadero / falso.
Pero se puede argumentar que en comparación con Perl C está fuertemente tipado. Así que es uno de esos argumentos famosos (vi vs emacs, linux vs windows, etc.). C # tiene un tipo más fuerte que C. Básicamente, puedes argumentar de cualquier manera. Y sus respuestas probablemente irán en ambos sentidos :) Además, algunos libros de texto / páginas web dirán que C tiene un tipo débil, y algunos dirán que C tiene un tipo fuerte. Si va a wikipedia, la entrada C dice "escritura parcialmente débil". Yo diría que en comparación con Python C tiene un tipo débil. Entonces Python / C #, C, Perl en el continuo.