[C] convertir un char en int et vice versa?

Fermé
boitaRytm Messages postés 14 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 22 octobre 2008 - 7 janv. 2007 à 11:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 déc. 2014 à 21:34
bonjour tout le monde
je debute en C et j'aimerais savoir s'il ya pas une fonction qui permet de convertir un caractère en un entier et inversement, un peu du mem genre que "atoi"

si oui merci de me donner la syntaxe bien expliquée avec :)

merci d'avance
(une reponse d'ici ce soir ca serait genial)
A voir également:

7 réponses

Sais-tu qu'il n'y a pas de typage fort en C ?
Cela veut dire que tu peux te servir d'une variable de type char comme si c'était un int :
c'est à dire que tu peux utiliser les opérateurs de comparaisons, arithmétique, logique.

Si par contre, tu as besoin de mixer operandes de type int avec d'autres de type int, convertit-les dans le type du résultat attendu.
Exemple:

{
int i;
resultat;
char c1,c2;
i=2;
c1=100;
c2=100;
resultat=(int) c1*(int) c2+i;
}

En effet, si la conversion n'est pas réalisée avant d'effectuer la *, le résultat intermédiaire est stocké dans une variable temporaire de type char et dans notre cas, ne suffit pas à stocker le résultat dans son intégralité (il faut 2 octets. Le type char tient sur 1 !!)
Le résultat intermédiaire est tronqué et la variable intermédiaire ne stocke que les bits les moins significatifs.
Le résultat final sera faux.
Bien sûr, le langage C ne le signale pas par défaut. Peut-être qu'une option de compilateur peut permettre de le signaler ou l'outil lint.
Je te conseille à ce propos d'utiliser lint, qui t'aidera à débugger tes programmes. C'est très formateur et t'évitera peut-être de t'user les yeux devant l'écran et les bouquins.

D'autres langages comme Ada, réalise une vérification systèmatique de la concordance des types dans les expressions et les affectations, à la compilation et controle les débordements à l'exécution.
Ceux qui ont développé en Ada, ont tous connu, l'exception Ada : Constraint error.

Donc, voilà, pour répondre à ta question :

pour convertir, un char en entier : (int) <operande char>.

De facon générale : (type) <operande>.

où type peut être : int, char, long, unsigned, ... et toute combinaison.
où operande peut être : constante, variable, expression.

Voilà, voilà, a+.

P.S: Amuse-toi bien.
Tu apprends le C pour faire quoi, si c'est indiscret ?
12
Oups, mais tu auras corrigé de toi-même, dans l'exemple, j'ai mal déclaré, la variable résultat : ajouter int devant résultat, ligne 3.

Sinon, ça pourrait pas compiler.

sinon, une fois déclarée, laisser la ligne 3 telle quelle, n'a aucun effet sinon de forcer le compilateur à signaler que cette instruction n'a pas d'effet.
0