129 votes

Convertir un chiffre de caractère en entier correspondant en C

Existe-t-il un moyen de convertir un caractère en entier en C ?

Par exemple, de '5' à 5 ?

184voto

Chris Young Points 8525

Selon d'autres réponses, c'est très bien :

char c = '5';
int x = c - '0';

En outre, pour la vérification des erreurs, vous pouvez vérifier que le chiffreisdigit (c) est vrai en premier. Notez que vous ne pouvez pas faire la même chose pour les lettres, par exemple :

char c = 'b';
int x = c - 'a'; // x is now not necessarily 1

La norme garantit que les valeurs des caractères pour les chiffres '0' à '9' sont contiguës, mais ne garantit pas pour d'autres caractères comme les lettres de l'alphabet.

49voto

Soustrayez « 0 » comme ceci :

int i = c - '0';

La norme C garantit que chaque chiffre de la fourchette '0'..'9' est supérieur d'un chiffre à son chiffre précédent (dans la section 5.2.1/3 du brouillon C99). Il en va de même pour le C++.

14voto

Ashish Points 170

Pour convertir un chiffre de caractère en entier correspondant. Faites comme indiqué ci-dessous :

char c = '8';                    
int i = c - '0';

La logique derrière le calcul ci-dessus est de jouer avec les valeurs ASCII. La valeur ASCII du caractère 8 est 56, la valeur ASCII du caractère 0 est 48. La valeur ASCII de l'entier 8 est 8.

Si nous soustrayons deux caractères, la soustraction se produira entre ASCII des caractères.

int i = 56 - 48;   
i = 8;

13voto

Arif Points 1714

Soustrayez le caractère '0' ou int 48 comme ceci :

char c = '5';
int i = c - '0';

Explication : En interne, il fonctionne avec la valeur ASCII. Dans le tableau ASCII, la valeur décimale du caractère 5 est 53 et 0 est 48. Donc 53 - 48 = 5

OU

char c = '5';
int i = c - 48; // Because decimal value of char '0' is 48

Cela signifie que si vous déduisez 48 de n'importe quel caractère numérique, il convertira automatiquement l'entier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X