J'utilise dev ++ pour la programmation C et j'ai fabriqué sur un programme simple d'ajout, de soustraire, multi et div. Il n'y a pas d'erreur dans mon code mais je reçois un type différent de 9 chiffres ( -317629566 code>) de message avec la sortie dans mon écran de sortie. select a operator( + , - , * , / ) :: +
enter first number : 12
enter second number : 13
addition : 25-317629566
3 Réponses :
Le problème réside dans la façon dont vous affichez les données:
printf("addition : %d", a + b);
Merci beaucoup
printf("addition : %d%d", a + b);
You are asking printf to print two integers, but you are only passing one. This causes undefined behavior. In this case, it's just printing an arbitrary value, but potentially worse things could happen.
Comme je l'ai écrit dans mon commentaire, tous les énoncés 4 Printf em> (à l'intérieur de l'interrupteur em> bloc) sont faux. p>
Selon [CPPreference]: std :: printf, std :: fprintf , STD :: Sprintf, STD :: SnPrintf ( L'accent est mis sur strong> est le mien): p>
Prenons la 1 st sup> ( Afin de résoudre les problèmes: P>
Assurez-vous que le numéro des spécificateurs de conversion correspond au numéro d'arguments (faites également attention à leur type) qui suivent le format: Pour prendre les choses plus loin, afin d'avoir une sortie joliment formatée, ajoutez un " \ n em>" ( lf em>, 0x0a em> , eoln em>) caractère à la fin de la chaîne de format: Lorsqu'un tel caractère est rencontré, il n'est pas affiché à l'écran, mais le curseur saute au début de la ligne suivante: Pour prendre des choses encore plus loin, vous pouvez également imprimer les chiffres qui ont donné ce résultat: En tant que note finale (non liée à la question elle-même), vous voudrez peut-être éviter la division lorsque B em> est 0. P>
printf ("addition:% d% d", A + B); code>) à titre d'exemple: P>
A + B code> ne produit que 1 em> strong> valeur entière, et vous tombez dans le comportement
printf ("addition:% d", A + B); Code > p> li>
printf (" Addition:% d \ n ", A + B); code> p> li>
printf ("addition:% d +% d =% d \ n", A, B, A + B ); code> ( 3 em> strong> % d em> s, 3 entiers après le spécificateur de format) p> li>
ul>
Printf ("Add:% d% d", A + B); code> est incorrect, il attend 2 valeurs et vous ne fournissez qu'un. Déposer un % d i>:printf ("addition:% d \ n", A + B); code>@Cristifati vous avez donné la réponse, par curiosité, pourquoi avez-vous utilisé une remarque plutôt qu'une réponse? Je suis surpris parce que sans réponse lorsque nous examinons la liste des questions que nous ne pouvons pas savoir que le problème a été résolu, de sorte que beaucoup de gens viendront sur cette question pour rien
Si vous voulez que les gens écrivent dans des réponses plutôt que dans les commentaires, arrêtez les gens de voter des réponses quand ils n'aiment pas la question.
@bruno: J'ai repéré un problème (ils peuvent être d'autres). De plus, je pensais qu'il devrait y avoir de nombreuses questions en double sur ce sujet. Après une recherche rapide, je n'ai trouvé aucun.
@Cristifati mer merci beaucoup
De rien! Avez-vous lu ma réponse?
@Cristifati oui oui je l'ai fait. J'ai lu votre réponse et cela m'a aidé.