Mon code: i saisie Sortie attendue: sortie réelle: Quel est le problème ici? p> p> 2 code>, p> 2 est ce que j'ai entré code> p> 2293324 est ce que j'ai entré code> p>
6 Réponses :
printf("%d is what I entered\n", number);
Merci Bro, vous êtes un économiseur de vie.
@Stevenelcarim Il est préférable de Accepter une réponse au lieu de commenter "< I> Merci! I> ".
Comment est-ce ub? Cela ne va pas simplement imprimer l'adresse de la variable au lieu de sa valeur?
@Happycoder " ne sera-t-il pas simplement imprimer l'adresse de la variable au lieu de sa valeur? I>" - tout pourrait être le résultat que le code de l'OP invoque UB. Pour imprimer l'adresse, l'OP aurait dû utiliser le spécificateur de format % p code>. Vous devez utiliser les spécificateurs de format appropriés, c'est-à-dire que vous devez fournir le type de variable correct car le spécificateur de format attend. Sinon, le code montre UB comme indiqué dans la norme indiquée dans ma réponse.
Vous utilisez opérateur & sur numéro code> , signifie prendre en compte de cela, donc vous n'imprimez pas la valeur du numéro code>, mais l'adresse de celui-ci, vous devez: printf("%d is what I entered\n", number);
#include <stdio.h>
int main(void) {
printf("Enter a number: ");
int number;
scanf("%d", &number);
printf("The number is: %d\n", number);
return 0;
}
This should solve your problem.In scanf() first you have to specify what the input item will be(int, float, char, char*, etc...) for your example "%d" is for integer. After that, you have to get the address of your item. That's why you have to use the & operator before the variable. Your error occurred due to the fact that you were using the & operator on the printf() as well. This basically means that you print the address in the stack where you stored the integer. But without the & you print the actual value.Hope this helps.
Si vous auriez utilisé l'option -wall -g code> COMPILER, vous auriez dû voir l'erreur d'erreur pendant la compilation:
u peut essayer de supprimer le numéro et du numéro et simplement écrire un numéro
printf("%d is what I entered\n", number);
que & code> donne l'adresse du "numéro" variable. Vous ne devriez pas l'utiliser.
Solution: printf( "%d is what I entered\n", number);
Faire un choix C ++ ou C - deux bêtes différentes
Chaque fois que vous entrez quelque chose, vous devez vérifier que l'opération d'entrée a été réussie, par exemple:
si (1 == scanf ("% d", et numéro)) {...} code>. Comme il a déjà été signalé, le problème que vous avez observé est un problème différent, bien que (l'utilisation de pointeur sur les valeurs dansscanf () code> et l'utilisation directe des valeurs dansprintf () code>).