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

boitaRytm Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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

didou
 
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
didou
 
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