Algo ou c++

Fermé
sexy boy - 4 nov. 2009 à 22:33
mamiemando Messages postés 33123 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mai 2024 - 5 nov. 2009 à 13:24
Bonjour,
ecrire un programme permettant d'afficher le code ascii d'un caractere aider moi svp c urgent merci davance

2 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
4 nov. 2009 à 22:50
en C++, le code ascii d'un caractère est sa valeur numérique. (En fait les char peuvent être écrits 'a', mais ce sont en fait des nombres. Ex :
char lettre='a';
printf("a=%d", lettre);


je ne suis pas sûr complètement de mon exemple. si ça ne marche pas faire ceci :
char lettre='a';
int code=lettre
printf("a=%d", code);
0
mamiemando Messages postés 33123 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mai 2024 7 753
5 nov. 2009 à 13:24
En C/C++ avec printf : tu n'as même pas besoin de passer par un int. Le printf se fiche pas mal du type de la variable sous-jacente (d'ailleurs il n'a aucun moyen de la connaître), le format que tu passes à printf lui dit simplement combien de bytes écrire comment les interpréter (comme une valeur numérique, un char etc...). En soi, ce que tu viens de faire avec un char marcherait aussi bien avec un wchar_t (caractère unicode).

En C++ si tu utilisais des flux (opérateur << sur les std::ostream) : la problématique serait différente, car à la compilation, C++ utilise l'opérateur << qui correspond au type que tu tentes d'écrire. Ainsi, si tu écrivais :

char c = 'x';
std::cout << x << std::endl;


... ce serait l'opérateur suivant qui serait appelé :

std::ostream & operator << (std::ostream &, char);


.. au lieu de :

std::ostream & operator << (std::ostream &, int);


Quoiqu'il en soit ce n'est pas à l'intérieur du code de << que la distinction sur le type et faite car << n'a aucun moyen de savoir, mais bien à la compilation. Dans ce cas il faudrait alors effectivement passer par un entier intermédiaire ou caster le char (par exemple avec un static_cast<int>).

Bonne chance
0