C est considéré comme statiquement typé (vous ne pouvez pas changer de variable de int à float). Une fois qu'une variable est déclarée, elle est bloquée de cette façon.
Mais il est considéré comme faiblement typé car les types peuvent être inversés.
Qu'est-ce que 0? '\ 0', FALSE, 0.0, etc.
dans de nombreuses langues, vous ne pouvez pas dire IF (variable) car les conditions ne prendront que des valeurs booléennes à partir d'expressions booléennes. Ceux-ci sont plus fortement typés. La même chose s'applique au passage entre les caractères et les entiers.
fondamentalement, c a deux principaux types de données simples, des entiers et des nombres à virgule flottante (bien que diverses précisions). Tout le reste des booléens, des énumérations (pas simples mais qui correspondent), etc. sont implémentés comme l'un de ceux-ci. Même les caractères sont essentiellement des entiers.
Comparez avec d'autres langages où il existe des types chaîne, des types enum qui ne peuvent être affectés qu'aux valeurs définies, des types booléens où seules les expressions qui génèrent des booléens ou vrai / faux peuvent être utilisées.
Mais vous pouvez affirmer que par rapport à Perl C est fortement typé. C'est donc l'un de ces fameux arguments (vi vs emacs, linux vs windows, etc.). C # est plus typé que C. En gros, vous pouvez argumenter dans les deux cas. Et vos réponses iront probablement dans les deux sens :) De plus, certains manuels / pages Web indiqueront que C est faiblement typé, et certains diront que C est fortement typé. Si vous allez sur wikipedia, l'entrée C dit "typage partiellement faible". Je dirais que par rapport à Python C est faiblement typé. Donc Python / C #, C, Perl sur le continuum.