Partage
  • Partager sur Facebook
  • Partager sur Twitter

std::cout : La question bête du jour

Sujet résolu
6 août 2008 à 12:09:46

Bonjour,

J'ai une question vraiment, mais vraiment bête.

D'ailleurs j'ai envi de me cacher.

--> [] *je suis caché*

Bref :p

Attention, code haut niveau !

char unNombre = 2;

std::cout << unNombre << std::endl;


Comment que je dois faire pour afficher un nombre et pas une lettre sans passer par "int" ou "long" ?
Vu que là, le code va afficher "b".

PS : Je vous avais prévenu :-°

Second question un peu moins bête, un "short" ça se situe où par apport aux "char" et aux "int" ?

Merci d'avance :-°

  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 12:21:16

std::cout << 12 << std::endl; ? (ou bien j'ai mal compris ?)

Pour le short : http://www.commentcamarche.net/cpp/cpptype.php3
  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 12:22:27

a cause de l'overloading, sans passer par un nombre (short, long, int, long long, etc...) tu ne peux pas afficher de nombre.

en generale :

le short fait deux octets
l'int fait 4 octets
le long fait 4 octets
le long long fait 8 octets
  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 12:25:11

Salut Xahell :p ,

Pour afficher le numero ASCII correspondant de ton caractère, tu es je crois obligé de passer par un int ou un long.
Soit de cette manière (je ne sais pas trop quelle autre manière tu imaginais?) :

char lettre = 'B';
std::cout<<lettre<<std::endl;//Affiche 'B'
std::cout<<int(lettre)<<std::endl;//Affiche le code ASCII correspondant au caractère 'B' soit 66


Ensuite pour le short, le lien de Genius devrait pouvoir répondre à tes questions.

Edit:

J'avais peut être mal compris la première question, mais si tu voulais pouvoir afficher un chiffre, en tant que caractère, il suffit de rajouter les symboles " ' ". Dans ce cas, tu affiche bien un nombre, sans avoir besoin de passer par un "int()" ou autre. Par contre, tu ne peux pas réaliser d'opérations mathématiques comme ça (ou dumoins le resultat ne risque pas d'être très cohérent ^^)

char nombre = '2';

  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 12:35:31

C'est juste que je voulais afficher un nombre qui dans aucun cas ne pouvait dépasser 255, donc je trouvais ça bête de mettre un int alors qu'un char passait très bien niveau taille.

Oui je suis pointilleux sur les octets que j'utilise :lol:

C'est super intéressant le truc des short int et des long int, ça éclaircit bien ma vision :)

Je pensais que long et int était 2 types complètement différents mais avec la même valeur. En fait non, long est une précision sur le type de l'int :p

C'est bête mais c'est bon à savoir pour la stabilité du programme :-°

Merci beaucoup pour vos réponses encore une fois :)
  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 13:21:12

Il est tout faux le lien.
Tout ce que l'on sait, c'est :
sizeof(char) == 1 byte
sizeof(int) >= 16 bytes
sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int) <= sizeof(long long int)

[J'ai volontairement utilisé byte et pas octet]

[J'ai toujours vu le char signé, et pourtant c'est différent de signed char. Il faudra que je creuse à l'occasion.]

Le reste, c'est dépendant de ton compilateur+OS et des options de compilation utilisées.
  • Partager sur Facebook
  • Partager sur Twitter
C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
6 août 2008 à 14:00:38

Ah bon, je ne savais pas que le lien était mauvais, désolé, ça me paraissait à peu près juste :honte:
  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 15:42:12

Citation

sizeof(int) >= 16 bytes


Tu trouves pas ça un peu gros ?
  • Partager sur Facebook
  • Partager sur Twitter
6 août 2008 à 16:41:06

Oups. Erreur d'échelle. Il fallait lire 16bits.
  • Partager sur Facebook
  • Partager sur Twitter
C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.