Table des matières
Les types
Les booléens
Python a un type bool avec les valeurs False et True.
C permet de faire des calculs de types booléens mais n'a pas de type booléen à proprement dit.
On utilise un entier. La convention habituelle est que 0 est interprété comme faux et tout autre valeur est interprétée comme vrai.
Les entiers
Python
En Python, on n'a que le type int, codé sur 4 octets. Un entier Python peut donc aller de -2147483648 à 2147483647. Mais si le nombre devient plus grand, Python s'arrange de sorte que la taille de l'entier est en fait illimitée !
il y avait autrefois un typelongpour les grands entiers, mais ce type a été intégré au typeintde sorte qu'on n'a plus aucune question à se poser, tout se fait automatiquement.
Calculer 2**100 ne pose aucun problème et Python donne sans complexe le résultat 1267650600228229401496703205376
Bien sûr, les calculs deviennent beaucoup plus lents quand on passe sur des grands entiers et utiliser cela sur un petit microcontrôleur serait trop gourmand en calculs.
C
En C, la logique n'est pas la même : On veut contrôler finement ce que fait la machine et son utilisation de la mémoire. On dispose donc de différents types, selon les besoin.
On dispose des types suivants :
charpour un entier signé entre -128 et 127. Ce type est aussi utilisé pour les caractères comme on le verra dans la partie sur les chaînes de caractères. Utilise 1 octet.short, entier court sur 2 octets, de -32768 à 32767int, identique àshort. C'est le type de base que l'on utilise quand on n'a pas de contraintes particulières. Quand on travaille sur un ordinateur sur lequel on dispose de ressources largement suffisantes, on ne s'embête pas à utiliserchar.long, sur 4 octets, de -2147483648 à 2147483647. Comme leintde base sur Python.
On a la possibilité de préciser que l'on veut un type sans signe :
unsigned charpour un entier signé entre 0 et 255. Ce type est aussi utilisé pour les caractères comme on le verra dans la partie sur les chaînes de caractères. Utilise 1 octet.unsigned short, entier court sur 2 octets, de 0 à 65535unsigned int, identique àunsigned short.unsigned long, sur 4 octets, de 0 à 4294967295.
Important : en C, quand on est débutant et que l'on fait des programmes simples sur un ordinateur, on se contente d'utiliser le type int sans chercher plus loin.
Les réels
Python connaît le type float soit un nombre codé en virgule flottante sur 64 bits.
C a également un type float mais le codage n'est que sur 32 bits (on parle de simple précision)
Tout comme pour le int, sur ordinateur, si on n'a pas de contrainte particulière, on passe directement à la double précision, c'est à dire au type double codé sur 64 bits.
Les fonctions de la bibliothèque <math.h> comme cos, sqrt, pow, renvoient un double.
Au besoin, il existe une variante en versionfloat, mais encore une fois, on a plus vite fait d'utiliser directementdouble. Il faut être dans un cas avec des contraintes spéciales pour qu'il y ait un intérêt à utiliserfloat.
Bref, en Python float et en C double.
Les complexes
Python gère nativement les nombres complexes !
z = complexe(3,1) # crée le complexe 3 + i z**2 # fait le calcul et renvoie 8 + 6i
Évidemment, en C c'est toujours possible mais pas nativement, il faut charger une bibliothèque exprès.
Je sais, ça a l'air d'être de la publicité pour Python !
C est évidemment un langage très utilisé et très important. J'essaie simplement de faire comprendre que si on utilise beaucoup Python, c'est parce qu'il a l'avantage d'une très grande simplicité. C permet de faire ce que l'on veut mais il demande beaucoup plus d'investissement.
Les chaînes de caractères
Python utilise le type str.
En C, c'est beaucoup moins évident. Voir le document sur les chaînes de caractères pour s'en convaincre.
