CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Une petite question...

-pedrolan-
-pedrolan-
Niveau 7
05 mars 2006 à 14:13:45

Bonjour.

Je me demandais quelque chose...

Voici un code et son résultat:

  1. include <stdlib.h>
  2. include <iostream>

using namespace std;

int main()
{
int age;
cout << "Quel age avez-vous?" << endl;
cin >> age;
cout << endl << "Vous avez " << age << " ans?" << endl;
system("PAUSE");
return 0;
}

Quel age avez-vous?
treize ans

Vous avez 2009001733 ans?
Appuyez sur une touche pour continuer..._

Pourquoi lorsque je met un caractère comme valeur pour un int et que je l´affiche, ça me met un tas de chiffres...Et d´ailleurs qu´est-ce que ce tas de chiffres?
Je pensais que ça me donnerait la valeur ASCII de ´treize ans´, mais non...

Stophe
Stophe
Niveau 8
05 mars 2006 à 14:32:04

Chez moi ton code marche bien

-pedrolan-
-pedrolan-
Niveau 7
05 mars 2006 à 14:49:44

C´est-à-dire?
Est-ce qu´il te donne ´treize ans´ en ASCII?

Freepard44
Freepard44
Niveau 8
05 mars 2006 à 15:29:30

Il n´y a aucune raison que ce code marche si on saisie des caractères à la place de chiffres. Je penses que si tu saisis un caractère et que sa t´affiche des chiffres c´est que étant donné que un char c´est 1 octets sa t´affiche la séquence d´octets convertie en chiffres.

godrik
godrik
Niveau 30
05 mars 2006 à 17:54:24

je penses meme que l´operation renvoye une erreur...

dnob700
dnob700
Niveau 10
05 mars 2006 à 18:32:59

bien sur que non : une lecture avec cin ne renvoie pas d´erreur vu qu´elle renvoie une référence sur cin,et ça ne lève pas d´exception (sauf problème "grave").

Par contre ce qje suppose, c´est à dire que la norme ne dit pas comment traiter ce cas. Ce que tu peut faier, c´est de lrie une chaines de caractère, puis de vérifier si elle ne contient bien que des chiffres, et si c´est le cas, alors tu la convertit en int, sinon tu redemande à l´utilisateur son age.

godrik
godrik
Niveau 30
05 mars 2006 à 19:51:12

il y a une fonction qui te renvoie s´il y a eu une erreur lors de la dernière E/S

JeanYvesYves
JeanYvesYves
Niveau 10
05 mars 2006 à 23:33:34

tu as déclaré cela :

int age;
cin >> age;

donc, avec un cin, tu demandes un "int", et non une chaine de caracteres (un mot)
Tu as d´ailleurs de la chance que ça ne plante pas.

En fait, la machine se démerde comme elle peut : elle interprete ta chaine en codage de int, ce qui fait un truc faux...

Si tu veux entrer une chaine :

string s;
cin >> s;

la, ça marchera :)
(n´oublie pas d´inclure "string" et declarer le namespace std)

-pedrolan-
-pedrolan-
Niveau 7
08 mars 2006 à 15:53:29

Justement, j´ai fait exprès de demander des caractères dans un int pour voir ce que ça ferait...

Mais pourquoi ça affiche 2009001733?

freepard44 :d) "la séquence d´octets convertie en chiffres", c´est-à-dire?

guyver2
guyver2
Niveau 10
08 mars 2006 à 16:02:49

chez moi dès que je rentre autre chose qu´un nombre , il me répond
"vous avez 2 ans?"

donc je pense que si tu rentres n´importe quoi c´est normal qu´il sorte n´importe quoi. Au mois ça plante pas c´est deja ça.

-pedrolan-
-pedrolan-
Niveau 7
22 mars 2006 à 14:44:27

Bon alors j´ai une autre petite question, que je mets sur ce topic pour ne pas en créer un autre:

A quoi sert exactement, dans un code c++:
using namespace std;
?

Merci

godrik
godrik
Niveau 30
22 mars 2006 à 15:40:22

Le C++ définit plusieurs espace de nom de façon a ce que plusieurs bibliothèque puisse utilisé des fonctions du meme nom, par exemple ChargerObjet pourrait etre une fonction définit dans plusieurs bibliothèque.

chaque bibliothèque peut déclarer ses fonctions dans son espace de nommage. Ainsi les bibliothèque peuvent plus facilement évter les collisions (sauf si deux bibliothèque choisissent le même espace de nommage).

Plus de détails sur : http://www.mandragor.org/tutoriels/cpp/11

-pedrolan-
-pedrolan-
Niveau 7
22 mars 2006 à 15:48:00

:merci:

Neofungamer
Neofungamer
Niveau 21
25 mars 2006 à 01:08:44

le using namespace std; sert ici a t´empecher d´ecrire par exemple std::cout :)

-pedrolan-
-pedrolan-
Niveau 7
05 avril 2006 à 14:18:58

Bon j´ai encore deux petites questions:

J´ai écrit code pour attendre l´appui d´une touche avec getch() de stdlib.h (enfin pas sûr que ce soit de ce header):

  1. include <stdio.h>
  2. include <stdlib.h>

bool ToucheSortie();

int main(int argc, char** argv[])
{
printf("Trouvez la bonne touche pour sortir du programme\n");
while(!ToucheSortie)
{
printf("rate\n");
}
return 0;
}

bool ToucheSortie()
{
char touche = getch();
if (touche == ´c´) return true;
else return false;
}

Lorsque je l´enregistre en .c, le compilo ne reconnaît pas les mots ´bool´, ´true´ et ´false´.
Les booléens n´existent donc pas en C?

Maintenant si mon programme est en C++, le compilo reconnaît les booléens, mais c´est la fonction getch() qu´il n´aime pas (je croyais pourtant que les fonctions de C ne pouvaient pas être exclusives?), et il m´avertit que le fonction ToucheSortie vaudra toujours ´true´.

JeanYvesYves
JeanYvesYves
Niveau 10
05 avril 2006 à 14:37:42

bool, c´est du C++.
Personnellement, je n´emploie pas, je met int.
De toute façon, c´est la meme chose au niveau mémoire (et oui ! un petit booléan de 4 octets...)

utilise getchar() plutot que getch()

godrik
godrik
Niveau 30
05 avril 2006 à 14:41:06

la taille du type bool est officielement de 1 octet.
d´ailleurs:
mandan:~> cat /tmp/bool.cpp

  1. include <iostream>

int main()
{
std::cout<<sizeof(bool)<<std::endl;

return 0;
}
mandan:~> make /tmp/bool
g++ /tmp/bool.cpp -o /tmp/bool
mandan:~> /tmp/bool
1

JeanYvesYves
JeanYvesYves
Niveau 10
05 avril 2006 à 14:52:08

d´acc, il me semblait avoir lu

typedef bool int

Quoiqu´il en soit, quand c´est un retoru de fonction, c´est toujours EAX, registre de processeur de 32 bits :) (4 octets)

godrik
godrik
Niveau 30
05 avril 2006 à 14:57:30

ralala, tout ca pour avoir raison... :)
mais je vais etre contrariant... parceque ca depnd de la taille des mots processeurs... sur les machines 64 bits, il fait 8 octets (pas sur de ca), mais sur les proc 8bits, tu es content de passer un bool et pas un int! :)

JeanYvesYves
JeanYvesYves
Niveau 10
05 avril 2006 à 16:26:22

c´est vrai tu as entierement raison :-)
(t´as vu que je ne fais pas que avoir raison ?)
:lol:

de toute façon, c´était juste pour etre contrariant, car j´aime pas "bool", :rire2:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment